package com.webank.openledger.contracts;

import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

import com.webank.openledger.core.common.BaseIdentity;

import org.fisco.bcos.sdk.abi.FunctionEncoder;
import org.fisco.bcos.sdk.abi.FunctionReturnDecoder;
import org.fisco.bcos.sdk.abi.TypeReference;
import org.fisco.bcos.sdk.abi.datatypes.Address;
import org.fisco.bcos.sdk.abi.datatypes.Bool;
import org.fisco.bcos.sdk.abi.datatypes.DynamicArray;
import org.fisco.bcos.sdk.abi.datatypes.DynamicBytes;
import org.fisco.bcos.sdk.abi.datatypes.Event;
import org.fisco.bcos.sdk.abi.datatypes.Function;
import org.fisco.bcos.sdk.abi.datatypes.Type;
import org.fisco.bcos.sdk.abi.datatypes.Utf8String;
import org.fisco.bcos.sdk.abi.datatypes.generated.Bytes32;
import org.fisco.bcos.sdk.abi.datatypes.generated.StaticArray4;
import org.fisco.bcos.sdk.abi.datatypes.generated.Uint256;
import org.fisco.bcos.sdk.abi.datatypes.generated.Uint8;
import org.fisco.bcos.sdk.abi.datatypes.generated.tuples.generated.Tuple1;
import org.fisco.bcos.sdk.abi.datatypes.generated.tuples.generated.Tuple2;
import org.fisco.bcos.sdk.abi.datatypes.generated.tuples.generated.Tuple3;
import org.fisco.bcos.sdk.abi.datatypes.generated.tuples.generated.Tuple4;
import org.fisco.bcos.sdk.abi.datatypes.generated.tuples.generated.Tuple5;
import org.fisco.bcos.sdk.abi.datatypes.generated.tuples.generated.Tuple6;
import org.fisco.bcos.sdk.client.Client;
import org.fisco.bcos.sdk.contract.Contract;
import org.fisco.bcos.sdk.crypto.CryptoSuite;
import org.fisco.bcos.sdk.crypto.keypair.CryptoKeyPair;
import org.fisco.bcos.sdk.eventsub.EventCallback;
import org.fisco.bcos.sdk.model.CryptoType;
import org.fisco.bcos.sdk.model.TransactionReceipt;
import org.fisco.bcos.sdk.model.callback.TransactionCallback;
import org.fisco.bcos.sdk.transaction.model.exception.ContractException;

@SuppressWarnings("unchecked")
public class NonFungibleAsset extends Contract implements BaseIdentity {
    public static final String[] BINARY_ARRAY = {"60806040526040805190810160405280600681526020017f7075626c696300000000000000000000000000000000000000000000000000008152506000908051906020019063000000539291906300001318565b506040805190810160405280600581526020017f6f776e65720000000000000000000000000000000000000000000000000000008152506001908051906020019063000000a39291906300001318565b506040805190810160405280600581526020017f61646d696e0000000000000000000000000000000000000000000000000000008152506002908051906020019063000000f39291906300001318565b506040805190810160405280600281526020017f5f720000000000000000000000000000000000000000000000000000000000008152506003908051906020019063000001439291906300001318565b506040805190810160405280600281526020017f5f770000000000000000000000000000000000000000000000000000000000008152506004908051906020019063000001939291906300001318565b506040805190810160405280600381526020017f616c6c00000000000000000000000000000000000000000000000000000000008152506005908051906020019063000001e39291906300001318565b506040805190810160405280600281526020017f69640000000000000000000000000000000000000000000000000000000000008152506006908051906020019063000002339291906300001318565b506040805190810160405280600481526020017f61646472000000000000000000000000000000000000000000000000000000008152506007908051906020019063000002839291906300001318565b506040805190810160405280600481526020017f74797065000000000000000000000000000000000000000000000000000000008152506008908051906020019063000002d39291906300001318565b506040805190810160405280600481526020017f726f6c65000000000000000000000000000000000000000000000000000000008152506009908051906020019063000003239291906300001318565b506040805190810160405280600781526020017f7075625f6b657900000000000000000000000000000000000000000000000000815250600a908051906020019063000003739291906300001318565b506040805190810160405280600481526020017f6461746100000000000000000000000000000000000000000000000000000000815250600b908051906020019063000003c39291906300001318565b506040805190810160405280600681526020017f726f6c655f720000000000000000000000000000000000000000000000000000815250600c908051906020019063000004139291906300001318565b506040805190810160405280600681526020017f726f6c655f770000000000000000000000000000000000000000000000000000815250600d908051906020019063000004639291906300001318565b506040805190810160405280600c81526020017f6f70656e696e675f62616e6b0000000000000000000000000000000000000000815250600e908051906020019063000004b39291906300001318565b506040805190810160405280600681526020017f6173736574730000000000000000000000000000000000000000000000000000815250600f908051906020019063000005039291906300001318565b506040805190810160405280600781526020017f62616c616e6365000000000000000000000000000000000000000000000000008152506010908051906020019063000005539291906300001318565b506040805190810160405280600681526020017f7265636f726400000000000000000000000000000000000000000000000000008152506011908051906020019063000005a39291906300001318565b506040805190810160405280600581526020017f61646d696e0000000000000000000000000000000000000000000000000000008152506012908051906020019063000005f39291906300001318565b506040805190810160405280600881526020017f6f70657261746f720000000000000000000000000000000000000000000000008152506013908051906020019063000006439291906300001318565b506040805190810160405280600581526020017f6f776e65720000000000000000000000000000000000000000000000000000008152506014908051906020019063000006939291906300001318565b506040805190810160405280600481526020017f75736572000000000000000000000000000000000000000000000000000000008152506015908051906020019063000006e39291906300001318565b5062010001601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062010002601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062010003601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062010004601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015630000080257600080fd5b50604051630001b268380380630001b2688339810180604052630000082c91908101906300001605565b8181606063000008683073ffffffffffffffffffffffffffffffffffffffff166300000ea464010000000002630000f64a176401000000009004565b9050630000093560068054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015630000090d5780601f1063000008e057610100808354040283529160200191630000090d565b820191906000526020600020905b81548152906001019060200180831163000008ee57829003601f168201915b505050505082601b6300000f8d64010000000002630000ce4f17909291906401000000009004565b5082601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b3032be86040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801563000009ff57600080fd5b505af11580156300000a15573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506300000a3d919081019063000015d6565b601f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c55fc52d6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156300000b0557600080fd5b505af11580156300000b1b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506300000b43919081019063000015d6565b602060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156300000c035781601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506300000c45565b30601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b505050600083511180156300000c5c575060408351105b15156300000ca3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016300000c9a90630000190e565b60405180910390fd5b6300000caf63000013a6565b604051809103906000f0801580156300000ccd573d6000803e3d6000fd5b50602b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506300000d1a63000013a6565b604051809103906000f0801580156300000d38573d6000803e3d6000fd5b50602c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663af0680206040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156300000ddf57600080fd5b505af11580156300000df5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506300000e1d919081019063000015d6565b83826300000e2b63000013b8565b6300000e3b9392919063000018c4565b604051809103906000f0801580156300000e59573d6000803e3d6000fd5b50603560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050506300001a4c565b6060600080836c0100000000000000000000000002915060146040519080825280601f01601f1916602001820160405280156300000ef15781602001602082028038833980820191505090505b509250600090505b60148110156300000f865781816014811015156300000f1457fe5b1a7f01000000000000000000000000000000000000000000000000000000000000000283828151811015156300000f4757fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080806001019150506300000ef9565b5050919050565b60008084600001846040518082805190602001908083835b6020831015156300000fce57805182526020820191506020810190506020830392506300000fa5565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103","902060000154905060008111156300001195577f77da9cffaff6366f6be90a928ae84ae14a77d3138ce236f9481aa71d15a9c47c32336040805190810160405280600681526020017f4d4f4449465900000000000000000000000000000000000000000000000000008152508789600001896040518082805190602001908083835b60208310151563000010aa57805182526020820191506020810190506020830392506300001081565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060010160405163000010f59594939291906300001848565b60405180910390a18285600001856040518082805190602001908083835b602083101515630000113c57805182526020820191506020810190506020830392506300001113565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206001019080519060200190630000118992919063000013ca565b50600191506300001310565b8285600001856040518082805190602001908083835b60208310151563000011d4578051825260208201915060208101905060208303925063000011ab565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206001019080519060200190630000122192919063000013ca565b50846001018054809190600101630000123c91906300001458565b90506001810185600001856040518082805190602001908083835b602083101515630000128057805182526020820191506020810190506020830392506300001257565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206000018190555083856001018281548110151563000012ce57fe5b9060005260206000209060020201600001908051906020019063000012f692919063000013ca565b508460020160008154809291906001019190505550600091505b509392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10630000135d57805160ff19168380011785556300001391565b828001600101855582156300001391579182015b8281111563000013905782518255916020019190600101906300001371565b5b50905063000013a291906300001490565b5090565b60405161011080630001597683390190565b6040516157e2806300015a8683390190565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10630000140f57805160ff19168380011785556300001443565b828001600101855582156300001443579182015b8281111563000014425782518255916020019190600101906300001423565b5b509050630000145491906300001490565b5090565b815481835581811115630000148b57600202816002028360005260206000209182019101630000148a919063000014bb565b5b505050565b63000014b891905b8082111563000014b45760008160009055506001016300001498565b5090565b90565b630000150591905b808211156300001501576000808201600063000014e291906300001508565b6001820160006101000a81549060ff02191690555060020163000014c3565b5090565b90565b50805460018160011615610100020316600290046000825580601f10630000153257506300001555565b601f016020900490600052602060002090810190630000155491906300001490565b5b50565b60006300001568825163000019e2565b905092915050565b600082601f8301121515630000158557600080fd5b815163000015a06300001599826300001961565b6300001932565b9150808252602083016020830185838301111563000015be57600080fd5b63000015cd8382846300001a02565b50505092915050565b60006020828403121563000015ea57600080fd5b600063000015fc848285016300001558565b91505092915050565b600080600060608486031215630000161c57600080fd5b600084015167ffffffffffffffff811115630000163857600080fd5b6300001648868287016300001570565b9350506020630000165d868287016300001558565b92505060406300001672868287016300001558565b9150509250925092565b63000016898163000019c2565b82525050565b6000630000169e8263000019ac565b80845263000016b68160208601602086016300001a02565b63000016c3816300001a3b565b602085010191505092915050565b600063000016e08263000019a1565b80845263000016f88160208601602086016300001a02565b6300001705816300001a3b565b602085010191505092915050565b6000815460018116600081146300001736576001811463000017585763000017a1565b607f600283041680865260ff19831660208701526040860193505063000017a1565b60028204808652602086019550630000177285630000198f565b60005b828110156300001798578154818901526001820191506020810190506300001775565b80880195505050505b505092915050565b600063000017b88263000019b7565b80845263000017d08160208601602086016300001a02565b63000017dd816300001a3b565b602085010191505092915050565b6000602e82527f61737365744e616d652073686f756c64206265206e6f74206e756c6c20616e6460208301527f206c657373207468616e203634200000000000000000000000000000000000006040830152606082019050919050565b600060a08201905063000018616000830188630000167c565b63000018726020830187630000167c565b81810360408301526300001888818663000016d1565b9050818103606083015263000018a08185630000168f565b9050818103608083015263000018b881846300001713565b90509695505050505050565b600060608201905063000018dd6000830186630000167c565b818103602083015263000018f3818563000017a9565b905063000019066040830184630000167c565b949350505050565b60006020820190508181036000830152630000192b8163000017eb565b9050919050565b6000604051905081810181811067ffffffffffffffff82111715630000195757600080fd5b8060405250919050565b600067ffffffffffffffff821115630000197a57600080fd5b601f19601f8301169050602081019050919050565b60008160005260206000209050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60005b838110156300001a245780820151818401526020810190506300001a05565b838111156300001a35576000848401525b50505050565b6000601f19601f8301169050919050565b62013f18806300001a5e6000396000f30060806040526004361062000397576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806301db8d89146200039c57806303ba71eb14620003cc578063081f933914620003fc5780630c0fd886146200042c5780630feca68a146200045c578063117803e3146200048c5780631560e1ca14620004bc57806315e9977e146200050257806319fc05e9146200053257806320ba5b60146200057657806323a772bd14620005ba57806326bca08914620005ea578063283d26ca146200062e5780632a0acc6a146200065e5780632ef8cb1c146200068e5780633915175314620006be5780633a0e617414620006ee5780633b007d8e146200071e5780633ef268931462000762578063403c6cfa14620007a65780634e55d03c14620007ea5780635262e2a1146200082e57806357872d13146200085e57806358edef4c146200088e5780635f27043914620008d2578063632e1dfe14620009005780636352211e14620009305780636667788f1462000974578063699cc7f114620009b85780636adc416514620009e85780636c906a5c1462000a185780636cf1c3ee1462000a48578063713aadf81462000a8c5780637bdd20b21462000ad05780637e4755151462000b1457806381e167cf1462000b585780638662acad1462000b88578063882fa75d1462000bcc57806392ad4c561462000c10578063949d225d1462000c54578063983d27371462000c845780639d53fe2b1462000cb45780639d6f46bc1462000ce45780639e3ebd3b1462000d28578063a035b1fe1462000d6d578063a18c751e1462000d9d578063abacd0681462000de1578063ac44522e1462000e25578063b11569f51462000e69578063b3032be81462000e99578063b3cea2171462000ec9578063b4eb5ede1462000ef9578063b85a29011462000f29578063bb1239c31462000f59578063bb24fe8a1462000f89578063bdaa60191462000fb9578063be26ff7c1462000ffd578063c044eb361462001042578063c1fc1fba1462001086578063c28304aa14620010cd578063c55fc52d14620010fd578063cb6163ad146200112d578063d087d2881462001171578063d55edd6514620011a1578063d6d7d52514620011e6578063e077fef9146200122a578063e8c2553a146200126e578063ee58350614620012b2578063ef966c8914620012f6578063f02b8c8c146200133a578063f307b32c146200137e578063fea5e8b214620013ae575b600080fd5b348015620003a957600080fd5b50620003b4620013f3565b604051620003c39190620130d5565b60405180910390f35b348015620003d957600080fd5b50620003e462001495565b604051620003f39190620130d5565b60405180910390f35b3480156200040957600080fd5b506200041462001537565b604051620004239190620130d5565b60405180910390f35b3480156200043957600080fd5b5062000444620015d9565b604051620004539190620130d5565b60405180910390f35b3480156200046957600080fd5b50620004746200167b565b60405162000483919062013998565b60405180910390f35b3480156200049957600080fd5b50620004a4620016a3565b604051620004b39190620130d5565b60405180910390f35b348015620004c957600080fd5b50620004e86004803603620004e29190810190620105af565b62001745565b604051620004f993929190620139b5565b60405180910390f35b3480156200050f57600080fd5b506200051a620019e4565b604051620005299190620130d5565b60405180910390f35b3480156200053f57600080fd5b506200055e600480360362000558919081019062010a2e565b62001a86565b6040516200056d919062013084565b60405180910390f35b3480156200058357600080fd5b50620005a260048036036200059c91908101906201089a565b620020cd56","5b604051620005b1919062013084565b60405180910390f35b348015620005c757600080fd5b50620005d2620022dc565b604051620005e19190620130d5565b60405180910390f35b348015620005f757600080fd5b50620006166004803603620006109190810190620106d7565b6200237e565b60405162000625919062012fea565b60405180910390f35b3480156200063b57600080fd5b506200064662002e13565b604051620006559190620130d5565b60405180910390f35b3480156200066b57600080fd5b506200067662002eb5565b604051620006859190620130d5565b60405180910390f35b3480156200069b57600080fd5b50620006a662002f57565b604051620006b59190620130d5565b60405180910390f35b348015620006cb57600080fd5b50620006d662002ff9565b604051620006e59190620130d5565b60405180910390f35b348015620006fb57600080fd5b50620007066200309b565b604051620007159190620130d5565b60405180910390f35b3480156200072b57600080fd5b506200074a60048036036200074491908101906201089a565b6200313d565b60405162000759919062013084565b60405180910390f35b3480156200076f57600080fd5b506200078e6004803603620007889190810190620103d5565b6200334c565b6040516200079d91906201300e565b60405180910390f35b348015620007b357600080fd5b50620007d26004803603620007cc919081019062010666565b620035c8565b604051620007e1919062013998565b60405180910390f35b348015620007f757600080fd5b50620008166004803603620008109190810190620104ad565b620038f1565b6040516200082591906201300e565b60405180910390f35b3480156200083b57600080fd5b506200084662003d98565b6040516200085591906201257d565b60405180910390f35b3480156200086b57600080fd5b506200087662003dc2565b604051620008859190620130d5565b60405180910390f35b3480156200089b57600080fd5b50620008ba6004803603620008b49190810190620107fb565b62003e64565b604051620008c9919062013084565b60405180910390f35b348015620008df57600080fd5b50620008fe6004803603620008f8919081019062010a84565b62004070565b005b3480156200090d57600080fd5b5062000918620042be565b6040516200092791906201257d565b60405180910390f35b3480156200093d57600080fd5b506200095c600480360362000956919081019062010995565b620042e4565b6040516200096b91906201257d565b60405180910390f35b3480156200098157600080fd5b50620009a060048036036200099a9190810190620109ed565b62004366565b604051620009af919062013084565b60405180910390f35b348015620009c557600080fd5b50620009d062004471565b604051620009df9190620130d5565b60405180910390f35b348015620009f557600080fd5b5062000a0062004513565b60405162000a0f91906201257d565b60405180910390f35b34801562000a2557600080fd5b5062000a3062004539565b60405162000a3f919062013998565b60405180910390f35b34801562000a5557600080fd5b5062000a74600480360362000a6e919081019062010b09565b62004543565b60405162000a83919062013998565b60405180910390f35b34801562000a9957600080fd5b5062000ab8600480360362000ab2919081019062010c6b565b620046b9565b60405162000ac7919062013084565b60405180910390f35b34801562000add57600080fd5b5062000afc600480360362000af6919081019062010840565b62004a89565b60405162000b0b919062013084565b60405180910390f35b34801562000b2157600080fd5b5062000b40600480360362000b3a919081019062010b09565b62004cbf565b60405162000b4f919062013084565b60405180910390f35b34801562000b6557600080fd5b5062000b7062005127565b60405162000b7f9190620130d5565b60405180910390f35b34801562000b9557600080fd5b5062000bb4600480360362000bae919081019062010840565b620051c9565b60405162000bc39190620130f9565b60405180910390f35b34801562000bd957600080fd5b5062000bf8600480360362000bf2919081019062010bff565b620053fe565b60405162000c07919062013084565b60405180910390f35b34801562000c1d57600080fd5b5062000c3c600480360362000c36919081019062010457565b62005d27565b60405162000c4b919062013084565b60405180910390f35b34801562000c6157600080fd5b5062000c6c62006237565b60405162000c7b919062013998565b60405180910390f35b34801562000c9157600080fd5b5062000c9c6200624a565b60405162000cab9190620130d5565b60405180910390f35b34801562000cc157600080fd5b5062000ccc620062ec565b60405162000cdb9190620130d5565b60405180910390f35b34801562000cf157600080fd5b5062000d10600480360362000d0a919081019062010519565b6200638e565b60405162000d1f919062013998565b60405180910390f35b34801562000d3557600080fd5b5062000d54600480360362000d4e919081019062010b4a565b6200651f565b60405162000d6492919062012faf565b60405180910390f35b34801562000d7a57600080fd5b5062000d8562006b6a565b60405162000d94919062013998565b60405180910390f35b34801562000daa57600080fd5b5062000dc9600480360362000dc391908101906201089a565b62006b70565b60405162000dd8919062013084565b60405180910390f35b34801562000dee57600080fd5b5062000e0d600480360362000e079190810190620105af565b62006d7f565b60405162000e1c919062012ede565b60405180910390f35b34801562000e3257600080fd5b5062000e51600480360362000e4b91908101906201090d565b6200718f565b60405162000e60919062013084565b60405180910390f35b34801562000e7657600080fd5b5062000e81620073dc565b60405162000e9091906201257d565b60405180910390f35b34801562000ea657600080fd5b5062000eb162007402565b60405162000ec091906201257d565b60405180910390f35b34801562000ed657600080fd5b5062000ee1620074cb565b60405162000ef09190620130d5565b60405180910390f35b34801562000f0657600080fd5b5062000f116200756d565b60405162000f209190620130d5565b60405180910390f35b34801562000f3657600080fd5b5062000f416200760f565b60405162000f509190620130d5565b60405180910390f35b34801562000f6657600080fd5b5062000f71620076b1565b60405162000f8091906201257d565b60405180910390f35b34801562000f9657600080fd5b5062000fa1620076d7565b60405162000fb09190620130d5565b60405180910390f35b34801562000fc657600080fd5b5062000fe5600480360362000fdf919081019062010a2e565b62007779565b60405162000ff4919062013a6a565b60405180910390f35b3480156200100a57600080fd5b5062001029600480360362001023919081019062010cee565b620080e5565b6040516200103992919062013a00565b60405180910390f35b3480156200104f57600080fd5b506200106e6004803603620010689190810190620103d5565b6200843d565b6040516200107d919062013998565b60405180910390f35b3480156200109357600080fd5b50620010b26004803603620010ac919081019062010a2e565b620088d6565b604051620010c4949392919062012f02565b60405180910390f35b348015620010da57600080fd5b50620010e562008f1e565b604051620010f491906201257d565b60405180910390f35b3480156200110a57600080fd5b506200111562008f48565b6040516200112491906201257d565b60405180910390f35b3480156200113a57600080fd5b506200115960048036036200115391908101906201090d565b62009011565b60405162001168919062013084565b60405180910390f35b3480156200117e57600080fd5b50620011896200925e565b60405162001198919062013998565b60405180910390f35b348015620011ae57600080fd5b50620011cd6004803603620011c7919081019062010a2e565b62009268565b604051620011dd92919062012faf565b60405180910390f35b348015620011f357600080fd5b506200121260048036036200120c9190810190620107fb565b6200991b565b604051620012219190620130f9565b60405180910390f35b3480156200123757600080fd5b5062001256600480360362001250919081019062010666565b62009b27565b60405162001265919062012ede565b60405180910390f35b3480156200127b57600080fd5b506200129a60048036036200129491908101906201090d565b62009f41565b604051620012a9919062013084565b60405180910390f35b348015620012bf57600080fd5b50620012de6004803603620012d8919081019062010a2e565b6200a18e565b604051620012ed919062013084565b60405180910390f35b3480156200130357600080fd5b506200132260048036036200131c9190810190620103d5565b6200aa5b565b60405162001331919062013084565b60405180910390f35b3480156200134757600080fd5b5062001366600480360362001360919081019062010995565b6200b1bd565b60405162001375919062013998565b60405180910390f35b3480156200138b57600080fd5b50620013966200b23a565b604051620013a59190620130d5565b60405180910390f35b348015620013bb57600080fd5b50620013da6004803603620013d49190810190620105af565b6200b2dc565b604051620013ea929190620130a1565b60405180910390f35b600c8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156200148d5780601f1062001461576101008083540402835291602001916200148d565b820191906000526020600020905b8154815290600101906020018083116200146f57829003601f168201915b505050505081565b600e8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156200152f5780601f1062001503576101008083540402835291602001916200152f565b820191906000526020600020905b8154815290600101906020018083116200151157829003601f168201915b505050505081565b600d8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015620015d15780601f10620015a5576101008083540402835291602001916200","15d1565b820191906000526020600020905b815481529060010190602001808311620015b357829003601f168201915b505050505081565b600b8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015620016735780601f10620016475761010080835404028352916020019162001673565b820191906000526020600020905b8154815290600101906020018083116200165557829003601f168201915b505050505081565b60006200169560016021546200bf6390919063ffffffff16565b602181905550602154905090565b60148054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156200173d5780601f1062001711576101008083540402835291602001916200173d565b820191906000526020600020905b8154815290600101906020018083116200171f57829003601f168201915b505050505081565b600060608060008060006060806200175f8c8c8c6200bfbd565b6200176d8c8c8c8c6200c3fe565b9b5060019450600193508b60038151811015156200178757fe5b9060200190602002015192506001602a60008d6001815181101515620017a957fe5b90602001906020020151815260200190815260200160002060008d6002815181101515620017d357fe5b90602001906020020151815260200190815260200160002060006101000a81548160ff0219169083151502179055506200185b8b60038151811015156200181657fe5b906020019060200201518c60048151811015156200183057fe5b906020019060200201518d60008151811015156200184a57fe5b9060200190602002015186620080e5565b80955081965050508a60008151811015156200187357fe5b90602001906020020151604051908082528060200260200182016040528015620018ac5781602001602082028038833980820191505090505b50915060028b6000815181101515620018c157fe5b9060200190602002015102604051908082528060200260200182016040528015620018fb5781602001602082028038833980820191505090505b5090506200190c8c8c87876200c66d565b91506200191b828d8c6200c9be565b90507feff73610474f19c8e690a6077afc1b33bc14cf1cd4701557cef09164eeda42e383602960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040516200198e9291906201279e565b60405180910390a1620019c68b6000815181101515620019aa57fe5b906020019060200201516034546200bf6390919063ffffffff16565b60348190555083828297509750975050505050509450945094915050565b60108054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801562001a7e5780601f1062001a525761010080835404028352916020019162001a7e565b820191906000526020600020905b81548152906001019060200180831162001a6057829003601f168201915b505050505081565b6000606060008060008087601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166369921c26826040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040162001b0a91906201257d565b602060405180830381600087803b15801562001b2557600080fd5b505af115801562001b3a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062001b6091908101906201078e565b151562001ba4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162001b9b90620133c0565b60405180910390fd5b6000602760008c81526020019081526020016000205411151562001bff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162001bf6906201317e565b60405180910390fd5b62001c288962001c198c896200cbee90919063ffffffff16565b6200cc0e90919063ffffffff16565b9550601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c04d4ef3601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1630898c6040518563ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040162001ccb949392919062012d36565b6040805180830381600087803b15801562001ce557600080fd5b505af115801562001cfa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062001d20919081019062010416565b8095508196505050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a3793a618a6040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040162001da191906201257d565b602060405180830381600087803b15801562001dbc57600080fd5b505af115801562001dd1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062001df79190810190620103a9565b925083151562001e3e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162001e359062013888565b60405180910390fd5b60256000602760008d8152602001908152602001600020548152602001908152602001600020915060058260040160006101000a81548160ff021916908360ff160217905550816025600084600001548152602001908152602001600020600082015481600001556001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060028201548160020155600382015481600301556004820160009054906101000a900460ff168160040160006101000a81548160ff021916908360ff160217905550600682018160060190805462001f679291906200f84c565b509050506000602860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008460000154815260200190815260200160002060006101000a81548160ff02191690831515021790555062001fe88383600001546200cc2e565b602960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090805190602001906200203c9291906200f8c3565b5060368a908060018154018082558091505090600182039060005260206000200160009091929091909150555060016034600082825403925050819055507fb2d27e2e92f5b0c643d08adb4b91ca63ced07e12c366c14d111cc851f975e92b8a83600001546005604051620020b49392919062013a2d565b60405180910390a1600196505050505050509392505050565b6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166337258c0d33601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1630620021e560048054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015620021d05780601f10620021a457610100808354040283529160200191620021d0565b820191906000526020600020905b815481529060010190602001808311620021b257829003601f168201915b5050505050896200ce3990919063ffffffff16565b6040518563ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200222294939291906201259a565b602060405180830381600087803b1580156200223d57600080fd5b505af115801562002252573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200227891908101906201078e565b1515620022bc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620022b39062013624565b60405180910390fd5b620022d48383601b6200ce4f9092919063ffffffff16565b905092915050565b60118054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015620023765780601f106200234a5761010080835404028352916020019162002376565b820191906000526020600020905b8154815290600101906020018083116200235857829003601f168201915b505050505081565b6060806000806000806060600080601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c04d4ef3601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16308b8e6040518563ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200242d949392919062012bf8565b6040805180830381600087803b1580156200244757600080fd5b505af11580156200245c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062002482919081019062010416565b8097508198505050851515620024cf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620024c690620132d2565b60405180910390fd5b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166369921c26886040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200254891906201257d565b602060405180830381600087803b1580156200256357600080fd5b505af115801562002578573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200259e91908101906201078e565b151562","0025e2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620025d990620133c0565b60405180910390fd5b60028b511480156200262557508a6001815181101515620025ff57fe5b906020019060200201518b60008151811015156200261957fe5b90602001906020020151125b151562002669576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200266090620134f2565b60405180910390fd5b60008c511115620026e957600093505b8b51841015620026e8578b848151811015156200269257fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161415620026da5760019450620026e8565b838060010194505062002679565b5b841515620027c357601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634768e049886040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200276a91906201257d565b602060405180830381600087803b1580156200278557600080fd5b505af11580156200279a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620027c091908101906201078e565b94505b84151562002808576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620027ff90620138aa565b60405180910390fd5b60006023805490501415620028205782985062002e03565b60008c51118015620028785750600073ffffffffffffffffffffffffffffffffffffffff168c60008151811015156200285557fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1614155b1562002a2b57601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a3793a618d6000815181101515620028cc57fe5b906020019060200201516040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200291091906201257d565b602060405180830381600087803b1580156200292b57600080fd5b505af115801562002940573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620029669190810190620103a9565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515620029dd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620029d4906201326c565b60405180910390fd5b818c6000815181101515620029ee57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505b60018c5111801562002a835750600073ffffffffffffffffffffffffffffffffffffffff168c600181518110151562002a6057fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1614155b1562002c3657601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a3793a618d600181518110151562002ad757fe5b906020019060200201516040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040162002b1b91906201257d565b602060405180830381600087803b15801562002b3657600080fd5b505af115801562002b4b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062002b719190810190620103a9565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151562002be8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162002bdf906201368a565b60405180910390fd5b808c600181518110151562002bf957fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505b60028d5111801562002c62575060008d600281518110151562002c5557fe5b9060200190602002015114155b1562002d28576000602760008f600281518110151562002c7e57fe5b9060200190602002015181526020019081526020016000205411151562002cdc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162002cd3906201317e565b60405180910390fd5b602760008e600281518110151562002cf057fe5b906020019060200201518152602001908152602001600020548d600281518110151562002d1957fe5b90602001906020020181815250505b603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663521ae5368e8e8e6040518463ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040162002da59392919062013032565b600060405180830381600087803b15801562002dc057600080fd5b505af115801562002dd5573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525062002e00919081019062010692565b98505b5050505050505050949350505050565b600a8054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801562002ead5780601f1062002e815761010080835404028352916020019162002ead565b820191906000526020600020905b81548152906001019060200180831162002e8f57829003601f168201915b505050505081565b60128054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801562002f4f5780601f1062002f235761010080835404028352916020019162002f4f565b820191906000526020600020905b81548152906001019060200180831162002f3157829003601f168201915b505050505081565b60038054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801562002ff15780601f1062002fc55761010080835404028352916020019162002ff1565b820191906000526020600020905b81548152906001019060200180831162002fd357829003601f168201915b505050505081565b60028054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015620030935780601f10620030675761010080835404028352916020019162003093565b820191906000526020600020905b8154815290600101906020018083116200307557829003601f168201915b505050505081565b60018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015620031355780601f10620031095761010080835404028352916020019162003135565b820191906000526020600020905b8154815290600101906020018083116200311757829003601f168201915b505050505081565b6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166337258c0d33601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306200325560048054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015620032405780601f10620032145761010080835404028352916020019162003240565b820191906000526020600020905b8154815290600101906020018083116200322257829003601f168201915b5050505050896200ce3990919063ffffffff16565b6040518563ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200329294939291906201259a565b602060405180830381600087803b158015620032ad57600080fd5b505af1158015620032c2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620032e891908101906201078e565b15156200332c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620033239062013932565b60405180910390fd5b620033448383601b6200d1c39092919063ffffffff16565b905092915050565b606060006060600080601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a3793a61886040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401620033ce91906201257d565b602060405180830381600087803b158015620033e957600080fd5b505af1158015620033fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620034249190810190620103a9565b9350601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c04d4ef3601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1630868a6040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401620034c7949392919062012da0565b6040805180830381600087803b158015620034e157600080fd5b505af1158015620034f6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200351c919081019062010416565b809250819350505080151562003569576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620035609062013712565b60405180910390fd5b6036805480602002602001604051908101604052809291908181526020018280548015620035b75760200282019190600052602060002090","5b815481526020019060010190808311620035a2575b505050505094505050505092915050565b60006060600080601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c04d4ef3601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff163086896040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401620036709493929190620128a8565b6040805180830381600087803b1580156200368a57600080fd5b505af11580156200369f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620036c5919081019062010416565b809250819350505080151562003712576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200370990620131e4565b60405180910390fd5b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166369921c26836040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200378b91906201257d565b602060405180830381600087803b158015620037a657600080fd5b505af1158015620037bb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620037e191908101906201078e565b151562003825576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200381c90620133c0565b60405180910390fd5b603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e953d0af6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015620038ac57600080fd5b505af1158015620038c1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620038e79190810190620109c1565b9350505050919050565b60606000606060008088601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166369921c26826040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200397491906201257d565b602060405180830381600087803b1580156200398f57600080fd5b505af1158015620039a4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620039ca91908101906201078e565b151562003a0e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162003a0590620133c0565b60405180910390fd5b878910151562003a55576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162003a4c9062013448565b60405180910390fd5b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a3793a618b6040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040162003ace91906201257d565b602060405180830381600087803b15801562003ae957600080fd5b505af115801562003afe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062003b249190810190620103a9565b9450601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c04d4ef3601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1687878b6040518563ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040162003bc7949392919062012734565b6040805180830381600087803b15801562003be157600080fd5b505af115801562003bf6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062003c1c919081019062010416565b809350819450505081151562003c69576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162003c6090620138ee565b60405180910390fd5b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166369921c26846040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040162003ce291906201257d565b602060405180830381600087803b15801562003cfd57600080fd5b505af115801562003d12573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062003d3891908101906201078e565b151562003d7c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162003d7390620133c0565b60405180910390fd5b62003d89858a8a6200d3c7565b95505050505050949350505050565b6000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60048054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801562003e5c5780601f1062003e305761010080835404028352916020019162003e5c565b820191906000526020600020905b81548152906001019060200180831162003e3e57829003601f168201915b505050505081565b6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166337258c0d33601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff163062003f7c60048054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801562003f675780601f1062003f3b5761010080835404028352916020019162003f67565b820191906000526020600020905b81548152906001019060200180831162003f4957829003601f168201915b5050505050886200ce3990919063ffffffff16565b6040518563ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040162003fb994939291906201259a565b602060405180830381600087803b15801562003fd457600080fd5b505af115801562003fe9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200400f91908101906201078e565b151562004053576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200404a9062013426565b60405180910390fd5b6200406982601b6200d5ad90919063ffffffff16565b9050919050565b60606000806000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a3793a61886040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401620040f091906201257d565b602060405180830381600087803b1580156200410b57600080fd5b505af115801562004120573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620041469190810190620103a9565b9050601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c04d4ef3601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168387896040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401620041e99493929190620126ca565b6040805180830381600087803b1580156200420357600080fd5b505af115801562004218573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200423e919081019062010416565b80935081945050508180156200427057506200425b888262004366565b806200426f57506200426e88826200d80c565b5b5b1515620042b4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620042ab90620131a0565b60405180910390fd5b5050505050505050565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806025600084815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156200435d57600080fd5b80915050919050565b60008060008060276000878152602001908152602001600020549250600083111515620043ca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620043c1906201317e565b60405180910390fd5b6025600084815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150602660006025600086815260200190815260200160002060030154815260200190815260200160002090508473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200446857600193505b50505092915050565b600f8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156200450b5780601f10620044df576101008083540402835291602001916200450b565b820191906000526020600020905b815481529060010190602001808311620044ed57829003601f168201915b505050505081565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000603454905090565b600060606000806200455f86846200cbee90919063ffffffff16565b9250601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c04d4ef3601a","60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff163086896040518563ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040162004602949392919062012b8e565b6040805180830381600087803b1580156200461c57600080fd5b505af115801562004631573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062004657919081019062010416565b8092508193505050801515620046a4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200469b9062013536565b60405180910390fd5b85602281905550602254935050505092915050565b60006060620046c76200f915565b84601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166369921c26826040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200474191906201257d565b602060405180830381600087803b1580156200475c57600080fd5b505af115801562004771573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200479791908101906201078e565b1515620047db576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620047d290620133c0565b60405180910390fd5b620047e56200d97e565b881115156200482b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162004822906201359c565b60405180910390fd5b6200486886620048598a6200484a8d886200cbee90919063ffffffff16565b6200cbee90919063ffffffff16565b6200cc0e90919063ffffffff16565b925062004878898488886200d98b565b50602660008a815260200190815260200160002060c06040519081016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820154815260200160038201548152602001600482015481526020016005820154815250509150861562004984578160a001518810151562004974576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200496b9062013910565b60405180910390fd5b87826080018181525050620049e9565b600082608001511115620049de57816080015188111515620049dd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620049d49062013910565b60405180910390fd5b5b878260a00181815250505b81602660008b81526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160020155606082015181600301556080820151816004015560a082015181600501559050506001935050505095945050505050565b6000606060008062004aa586846200ce3990919063ffffffff16565b9250601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c04d4ef3601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff163062004bbc60048054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801562004ba75780601f1062004b7b5761010080835404028352916020019162004ba7565b820191906000526020600020905b81548152906001019060200180831162004b8957829003601f168201915b50505050508b6200ce3990919063ffffffff16565b878a6040518663ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040162004bfc959493929190620127d2565b6040805180830381600087803b15801562004c1657600080fd5b505af115801562004c2b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062004c51919081019062010416565b809250819350505080151562004c9e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162004c959062013426565b60405180910390fd5b62004cb486601b6200d5ad90919063ffffffff16565b935050505092915050565b60006060600080600080600062004ce089876200cbee90919063ffffffff16565b9550601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c04d4ef3601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1630898c6040518563ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040162004d83949392919062012e74565b6040805180830381600087803b15801562004d9d57600080fd5b505af115801562004db2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062004dd8919081019062010416565b809550819650505083151562004e25576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162004e1c9062013646565b60405180910390fd5b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166369921c26866040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040162004e9e91906201257d565b602060405180830381600087803b15801562004eb957600080fd5b505af115801562004ece573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062004ef491908101906201078e565b151562004f38576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162004f2f90620133c0565b60405180910390fd5b602660008a815260200190815260200160002092506000836003015411151562004f99576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162004f9090620132b0565b60405180910390fd5b60008360040154111562004ffc5762004fb16200d97e565b836004015410151562004ffb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162004ff2906201339e565b60405180910390fd5b5b6000836004015414806200501c5750620050156200d97e565b8360040154105b9150620050286200d97e565b836004018190555082602660008b8152602001908152602001600020600082015481600001556001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506002820154816002015560038201548160030155600482015481600401556005820154816005015590505081156200511857826002015490505b826003015481111515620051175762005108816200dcdc565b508080600101915050620050ef565b5b81965050505050505092915050565b60158054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015620051c15780601f106200519557610100808354040283529160200191620051c1565b820191906000526020600020905b815481529060010190602001808311620051a357829003601f168201915b505050505081565b606080600080620051e486846200ce3990919063ffffffff16565b9250601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c04d4ef3601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1630620052fb60038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015620052e65780601f10620052ba57610100808354040283529160200191620052e6565b820191906000526020600020905b815481529060010190602001808311620052c857829003601f168201915b50505050508b6200ce3990919063ffffffff16565b878a6040518663ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200533b959493929190620127d2565b6040805180830381600087803b1580156200535557600080fd5b505af11580156200536a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062005390919081019062010416565b8092508193505050801515620053dd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620053d49062013558565b60405180910390fd5b620053f386601b6200ddff90919063ffffffff16565b935050505092915050565b600060606000806000620054116200f962565b87601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166369921c26826040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200548b91906201257d565b602060405180830381600087803b158015620054a657600080fd5b505af1158015620054bb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620054e191908101906201078e565b151562005525576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200551c90620133c0565b60405180910390fd5b6000602760008d81526020019081526020016000205411151562005580576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162005577906201317e565b60405180910390fd5b6000602760008c815260200190815260200160002054141515620055db57604051","7f08c379a0000000000000000000000000000000000000000000000000000000008152600401620055d29062013338565b60405180910390fd5b6200561889620056098c620055fa8f8b6200cbee90919063ffffffff16565b6200cbee90919063ffffffff16565b6200cc0e90919063ffffffff16565b9550601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a3793a618a6040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200569391906201257d565b602060405180830381600087803b158015620056ae57600080fd5b505af1158015620056c3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620056e99190810190620103a9565b9250601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c04d4ef3601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1630898c6040518563ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200578c94939291906201297c565b6040805180830381600087803b158015620057a657600080fd5b505af1158015620057bb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620057e1919081019062010416565b8095508196505050838015620057ff5750620057fe8b846200d80c565b5b151562005843576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200583a906201346a565b60405180910390fd5b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166369921c26866040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401620058bc91906201257d565b602060405180830381600087803b158015620058d757600080fd5b505af1158015620058ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200591291908101906201078e565b151562005956576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200594d90620133c0565b60405180910390fd5b62005974602760008d8152602001908152602001600020546200df18565b50600460ff1660256000602760008f815260200190815260200160002054815260200190815260200160002060040160009054906101000a900460ff1660ff161415801562005a005750600560ff1660256000602760008f815260200190815260200160002054815260200190815260200160002060040160009054906101000a900460ff1660ff1614155b151562005a44576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162005a3b9062013404565b60405180910390fd5b602760008c815260200190815260200160002054602760008c8152602001908152602001600020819055506000602760008d81526020019081526020016000208190555060256000602760008d815260200190815260200160002054815260200190815260200160002060c06040519081016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff1660ff1660ff16815260200160068201805480602002602001604051908101604052809291908181526020016000905b8282101562005c32578382906000526020600020018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801562005c1d5780601f1062005bf15761010080835404028352916020019162005c1d565b820191906000526020600020905b81548152906001019060200180831162005bff57829003601f168201915b50505050508152602001906001019062005b70565b50505050815250509150898260400181815250508160256000602760008e81526020019081526020016000205481526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604082015181600201556060820151816003015560808201518160040160006101000a81548160ff021916908360ff16021790555060a082015181600601908051906020019062005d119291906200f9b2565b5090505060019650505050505050949350505050565b6000606060008060008088601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166369921c26826040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040162005dab91906201257d565b602060405180830381600087803b15801562005dc657600080fd5b505af115801562005ddb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062005e0191908101906201078e565b151562005e45576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162005e3c90620133c0565b60405180910390fd5b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c04d4ef3601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1630898c6040518563ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040162005ee6949392919062012a50565b6040805180830381600087803b15801562005f0057600080fd5b505af115801562005f15573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062005f3b919081019062010416565b809550819650505083151562005f88576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162005f7f9062013668565b60405180910390fd5b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166369921c26866040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200600191906201257d565b602060405180830381600087803b1580156200601c57600080fd5b505af115801562006031573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200605791908101906201078e565b15156200609b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200609290620133c0565b60405180910390fd5b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a3793a618b6040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200611491906201257d565b602060405180830381600087803b1580156200612f57600080fd5b505af115801562006144573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200616a9190810190620103a9565b9250602760008a8152602001908152602001600020549150600082111515620061ca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620061c1906201317e565b60405180910390fd5b602860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060009054906101000a900460ff1696505050505050509392505050565b600062006245601b6200e20d565b905090565b60138054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015620062e45780601f10620062b857610100808354040283529160200191620062e4565b820191906000526020600020905b815481529060010190602001808311620062c657829003601f168201915b505050505081565b60098054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015620063865780601f106200635a5761010080835404028352916020019162006386565b820191906000526020600020905b8154815290600101906020018083116200636857829003601f168201915b505050505081565b600060606200639c6200f962565b620063b96001850186600a0a88026200bf6390919063ffffffff16565b92506001604051908082528060200260200182016040528015620063f257816020015b6060815260200190600190039081620063dc5790505b50915060c0604051908101604052808881526020018a73ffffffffffffffffffffffffffffffffffffffff168152602001848152602001898152602001600160ff16815260200183815250905080602560008981526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604082015181600201556060820151816003015560808201518160040160006101000a81548160ff021916908360ff16021790555060a0820151816006019080519060200190620064f79291906200f9b2565b5090505086602760008581526020019081526020016000208190555050509695505050505050565b60608060008060008087601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166369921c26826040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401620065a291906201257d56","5b602060405180830381600087803b158015620065bd57600080fd5b505af1158015620065d2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620065f891908101906201078e565b15156200663c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200663390620133c0565b60405180910390fd5b6200664b8c8c8c8c8c6200e21b565b602760008d8152602001908152602001600020549450602560008681526020019081526020016000209350600092505b8a51831015620067a45789838151811015156200669457fe5b90602001906020020151846005018c85815181101515620066b157fe5b906020019060200201516040518082805190602001908083835b602083101515620066f25780518252602082019150602081019050602083039250620066cb565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902090805190602001906200673a9291906200fa19565b50836006018b848151811015156200674e57fe5b906020019060200201519080600181540180825580915050906001820390600052602060002001600090919290919091509080519060200190620067949291906200fa19565b505082806001019350506200667b565b8360256000878152602001908152602001600020600082015481600001556001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060028201548160020155600382015481600301556004820160009054906101000a900460ff168160040160006101000a81548160ff021916908360ff1602179055506006820181600601908054620068839291906200f84c565b509050508360060180549050604051908082528060200260200182016040528015620068c457816020015b6060815260200190600190039081620068ae5790505b50965083600601805490506040519080825280602002602001820160405280156200690457816020015b6060815260200190600190039081620068ee5790505b509550600091505b836006018054905082101562006b5b5760008214156200692c5762006b4d565b83600601828154811015156200693e57fe5b906000526020600020018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015620069e05780601f10620069b457610100808354040283529160200191620069e0565b820191906000526020600020905b815481529060010190602001808311620069c257829003601f168201915b50505050508783815181101515620069f457fe5b9060200190602002018190525083600501846006018381548110151562006a1757fe5b90600052602060002001604051808280546001816001161561010002031660029004801562006a805780601f1062006a5d57610100808354040283529182019162006a80565b820191906000526020600020905b81548152906001019060200180831162006a6b575b505091505090815260200160405180910390208054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801562006b2b5780601f1062006aff5761010080835404028352916020019162006b2b565b820191906000526020600020905b81548152906001019060200180831162006b0d57829003601f168201915b5050505050868381518110151562006b3f57fe5b906020019060200201819052505b81806001019250506200690c565b50505050509550959350505050565b60225481565b6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166337258c0d33601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff163062006c8860048054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801562006c735780601f1062006c475761010080835404028352916020019162006c73565b820191906000526020600020905b81548152906001019060200180831162006c5557829003601f168201915b5050505050896200ce3990919063ffffffff16565b6040518563ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040162006cc594939291906201259a565b602060405180830381600087803b15801562006ce057600080fd5b505af115801562006cf5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062006d1b91908101906201078e565b151562006d5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162006d56906201324a565b60405180910390fd5b62006d778383601b6200e73e9092919063ffffffff16565b905092915050565b606060006060600080600073ffffffffffffffffffffffffffffffffffffffff1689600281518110151562006db057fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff161415801562006e255750600073ffffffffffffffffffffffffffffffffffffffff1689600381518110151562006e0257fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1614155b151562006e69576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162006e609062013206565b60405180910390fd5b62006e768989896200e947565b925062006e83896200ea40565b809a50819550505083151562006ed0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162006ec7906201348c565b60405180910390fd5b602460008a600281518110151562006ee457fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151562006f7a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162006f719062013514565b60405180910390fd5b602460008a600381518110151562006f8e57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151562007024576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200701b9062013514565b60405180910390fd5b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c04d4ef3601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168b60028151811015156200709557fe5b90602001906020020151868a6040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401620070de949392919062012660565b6040805180830381600087803b158015620070f857600080fd5b505af11580156200710d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062007133919081019062010416565b809250819350505080151562007180576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200717790620131c2565b60405180910390fd5b88945050505050949350505050565b60006060600080620071bf86620071b089866200ce3990919063ffffffff16565b6200ce3990919063ffffffff16565b9250601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c04d4ef3601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1630620072d660048054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015620072c15780601f106200729557610100808354040283529160200191620072c1565b820191906000526020600020905b815481529060010190602001808311620072a357829003601f168201915b50505050508c6200ce3990919063ffffffff16565b878a6040518663ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040162007316959493929190620127d2565b6040805180830381600087803b1580156200733057600080fd5b505af115801562007345573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200736b919081019062010416565b8092508193505050801515620073b8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620073af9062013932565b60405180910390fd5b620073d08787601b6200d1c39092919063ffffffff16565b93505050509392505050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b3032be86040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156200748b57600080fd5b505af1158015620074a0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620074c69190810190620103a9565b905090565b60068054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015620075655780601f10620075395761010080835404028352916020019162007565565b820191906000526020600020905b8154815290600101906020018083116200754757829003601f168201915b505050505081565b60078054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020","0182805460018160011615610100020316600290048015620076075780601f10620075db5761010080835404028352916020019162007607565b820191906000526020600020905b815481529060010190602001808311620075e957829003601f168201915b505050505081565b60008054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015620076a95780601f106200767d57610100808354040283529160200191620076a9565b820191906000526020600020905b8154815290600101906020018083116200768b57829003601f168201915b505050505081565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60088054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015620077715780601f10620077455761010080835404028352916020019162007771565b820191906000526020600020905b8154815290600101906020018083116200775357829003601f168201915b505050505081565b6000606060008060006200778c6200f962565b600088601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166369921c26826040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200780891906201257d565b602060405180830381600087803b1580156200782357600080fd5b505af115801562007838573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200785e91908101906201078e565b1515620078a2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200789990620133c0565b60405180910390fd5b6000602760008d815260200190815260200160002054111515620078fd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620078f4906201317e565b60405180910390fd5b620079268a620079178d8a6200cbee90919063ffffffff16565b6200cc0e90919063ffffffff16565b9650601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a3793a618b6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401620079a191906201257d565b602060405180830381600087803b158015620079bc57600080fd5b505af1158015620079d1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620079f79190810190620103a9565b9350601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c04d4ef3601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16308a8d6040518563ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040162007a9a949392919062012aba565b6040805180830381600087803b15801562007ab457600080fd5b505af115801562007ac9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062007aef919081019062010416565b809650819750505084801562007b0d575062007b0c8b856200d80c565b5b151562007b51576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162007b4890620138cc565b60405180910390fd5b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166369921c26876040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040162007bca91906201257d565b602060405180830381600087803b15801562007be557600080fd5b505af115801562007bfa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062007c2091908101906201078e565b151562007c64576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162007c5b90620133c0565b60405180910390fd5b600460ff1660256000602760008f815260200190815260200160002054815260200190815260200160002060040160009054906101000a900460ff1660ff1614151562007ce8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162007cdf90620137de565b60405180910390fd5b60256000602760008e815260200190815260200160002054815260200190815260200160002060c06040519081016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff1660ff1660ff16815260200160068201805480602002602001604051908101604052809291908181526020016000905b8282101562007e92578382906000526020600020018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801562007e7d5780601f1062007e515761010080835404028352916020019162007e7d565b820191906000526020600020905b81548152906001019060200180831162007e5f57829003601f168201915b50505050508152602001906001019062007dd0565b505050508152505092506026600084606001518152602001908152602001600020915062007ec483600001516200ecbf565b1562007f626040805190810160405280601181526020017f20686173206265656e206578706972656400000000000000000000000000000081525062007f5362007f0e8f6200ef9c565b6040805190810160405280600781526020017f6e6f74654e6f20000000000000000000000000000000000000000000000000008152506200f0fe90919063ffffffff16565b6200f0fe90919063ffffffff16565b90151562007fa8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162007f9f91906201315a565b60405180910390fd5b506002836080019060ff16908160ff16815250508260256000602760008f81526020019081526020016000205481526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604082015181600201556060820151816003015560808201518160040160006101000a81548160ff021916908360ff16021790555060a0820151816006019080519060200190620080879291906200f9b2565b509050507fb2d27e2e92f5b0c643d08adb4b91ca63ced07e12c366c14d111cc851f975e92b8b84600001518560800151604051620080c89392919062013a2d565b60405180910390a182608001519750505050505050509392505050565b600080600080620080f56200f915565b620080ff6200d97e565b8811151562008145576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200813c906201335a565b60405180910390fd5b6000891115620081a157620081596200d97e565b8910151515620081a0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200819790620135e0565b60405180910390fd5b5b602b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636d4ce63c6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156200822857600080fd5b505af11580156200823d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620082639190810190620109c1565b92506200833c6001602c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636d4ce63c6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015620082f257600080fd5b505af115801562008307573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200832d9190810190620109c1565b6200f2d890919063ffffffff16565b915060c0604051908101604052808381526020018773ffffffffffffffffffffffffffffffffffffffff1681526020018481526020016200838a60018a03866200bf6390919063ffffffff16565b81526020018a815260200189815250905080602660008481526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160020155606082015181600301556080820151816004015560a0820151816005015590505082829450945050505094509492505050565b6000806060600080600087601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166369921c26826040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401620084c191906201257d565b602060405180830381600087803b158015620084dc57600080fd5b505af1158015620084f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200851791908101906201078e565b15156200855b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200855290620133c0565b60405180910390fd5b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a3793a618a6040518263ffff","ffff167c0100000000000000000000000000000000000000000000000000000000028152600401620085d491906201257d565b602060405180830381600087803b158015620085ef57600080fd5b505af115801562008604573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200862a9190810190620103a9565b9550601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c04d4ef3601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1688888c6040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401620086cd949392919062012734565b6040805180830381600087803b158015620086e757600080fd5b505af1158015620086fc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062008722919081019062010416565b80945081955050508215156200876f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200876690620138ee565b60405180910390fd5b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166369921c26856040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401620087e891906201257d565b602060405180830381600087803b1580156200880357600080fd5b505af115801562008818573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200883e91908101906201078e565b151562008882576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200887990620133c0565b60405180910390fd5b602960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002091508180549050965050505050505092915050565b60608060606000620088e76200f962565b6060806060620088f66200f915565b620089398c8c6040805190810160405280600d81526020017f6765744e6f746544657461696c000000000000000000000000000000000000008152508d62004070565b60256000602760008f815260200190815260200160002054815260200190815260200160002060c06040519081016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff1660ff1660ff16815260200160068201805480602002602001604051908101604052809291908181526020016000905b8282101562008ae3578382906000526020600020018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801562008ace5780601f1062008aa25761010080835404028352916020019162008ace565b820191906000526020600020905b81548152906001019060200180831162008ab057829003601f168201915b50505050508152602001906001019062008a21565b50505050815250509450600260405190808252806020026020018201604052801562008b1e5781602001602082028038833980820191505090505b509350600260405190808252806020026020018201604052801562008b525781602001602082028038833980820191505090505b509250600260405190808252806020026020018201604052801562008b865781602001602082028038833980820191505090505b509150601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166346438ca086602001516040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040162008c0691906201257d565b602060405180830381600087803b15801562008c2157600080fd5b505af115801562008c36573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062008c5c9190810190620103a9565b84600081518110151562008c6c57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050846040015183600081518110151562008cbd57fe5b9060200190602002018181525050846060015183600181518110151562008ce057fe5b9060200190602002018181525050602660008660600151815260200190815260200160002060c06040519081016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820154815260200160038201548152602001600482015481526020016005820154815250509050806080015182600081518110151562008db057fe5b90602001906020020181815250508060a0015182600181518110151562008dd357fe5b9060200190602002018181525050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166346438ca082602001516040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040162008e5e91906201257d565b602060405180830381600087803b15801562008e7957600080fd5b505af115801562008e8e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062008eb49190810190620103a9565b84600181518110151562008ec457fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505083838387608001519850985098509850505050505093509350935093565b6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c55fc52d6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801562008fd157600080fd5b505af115801562008fe6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200900c9190810190620103a9565b905090565b6000606060008062009041866200903289866200ce3990919063ffffffff16565b6200ce3990919063ffffffff16565b9250601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c04d4ef3601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306200915860048054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015620091435780601f10620091175761010080835404028352916020019162009143565b820191906000526020600020905b8154815290600101906020018083116200912557829003601f168201915b50505050508c6200ce3990919063ffffffff16565b878a6040518663ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040162009198959493929190620127d2565b6040805180830381600087803b158015620091b257600080fd5b505af1158015620091c7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620091ed919081019062010416565b80925081935050508015156200923a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620092319062013624565b60405180910390fd5b620092528787601b6200ce4f9092919063ffffffff16565b93505050509392505050565b6000602154905090565b60608060606000806000806000806000602760008e815260200190815260200160002054111515620092d1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620092c8906201317e565b60405180910390fd5b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a3793a618c6040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200934a91906201257d565b602060405180830381600087803b1580156200936557600080fd5b505af11580156200937a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620093a09190810190620103a9565b9350601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c04d4ef3601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16308a8e6040518563ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040162009443949392919062012e0a565b6040805180830381600087803b1580156200945d57600080fd5b505af115801562009472573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062009498919081019062010416565b8096508197505050848015620094b65750620094b58c856200d80c565b5b1515620094fa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620094f190620136ac565b60405180910390fd5b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166369921c26876040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200957391906201257d565b602060405180830381600087803b1580156200958e57600080fd5b505af1158015620095a3573d6000803e3d6000","fd5b505050506040513d601f19601f82011682018060405250620095c991908101906201078e565b15156200960d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200960490620133c0565b60405180910390fd5b602760008d815260200190815260200160002054925060256000848152602001908152602001600020915081600601805490506040519080825280602002602001820160405280156200967557816020015b60608152602001906001900390816200965f5790505b5098508160060180549050604051908082528060200260200182016040528015620096b557816020015b60608152602001906001900390816200969f5790505b509750600090505b81600601805490508110156200990c576000811415620096dd57620098fe565b8160060181815481101515620096ef57fe5b906000526020600020018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015620097915780601f10620097655761010080835404028352916020019162009791565b820191906000526020600020905b8154815290600101906020018083116200977357829003601f168201915b50505050508982815181101515620097a557fe5b90602001906020020181905250816005018260060182815481101515620097c857fe5b906000526020600020016040518082805460018160011615610100020316600290048015620098315780601f106200980e57610100808354040283529182019162009831565b820191906000526020600020905b8154815290600101906020018083116200981c575b505091505090815260200160405180910390208054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015620098dc5780601f10620098b057610100808354040283529160200191620098dc565b820191906000526020600020905b815481529060010190602001808311620098be57829003601f168201915b50505050508882815181101515620098f057fe5b906020019060200201819052505b8080600101915050620096bd565b50505050505050935093915050565b6060601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166337258c0d33601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff163062009a3360038054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801562009a1e5780601f10620099f25761010080835404028352916020019162009a1e565b820191906000526020600020905b81548152906001019060200180831162009a0057829003601f168201915b5050505050886200ce3990919063ffffffff16565b6040518563ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040162009a7094939291906201259a565b602060405180830381600087803b15801562009a8b57600080fd5b505af115801562009aa0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062009ac691908101906201078e565b151562009b0a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162009b019062013558565b60405180910390fd5b62009b2082601b6200ddff90919063ffffffff16565b9050919050565b60608060008060606000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c04d4ef3601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1630888b6040518563ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040162009bd294939291906201283e565b6040805180830381600087803b15801562009bec57600080fd5b505af115801562009c01573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062009c27919081019062010416565b809450819550505082151562009c74576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162009c6b906201357a565b60405180910390fd5b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166369921c26856040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040162009ced91906201257d565b602060405180830381600087803b15801562009d0857600080fd5b505af115801562009d1d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062009d4391908101906201078e565b151562009d87576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162009d7e90620133c0565b60405180910390fd5b60238054905060405190808252806020026020018201604052801562009dbc5781602001602082028038833980820191505090505b509150600090505b60238054905081101562009f3457601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166346438ca060238381548110151562009e2057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040162009e8591906201257d565b602060405180830381600087803b15801562009ea057600080fd5b505af115801562009eb5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062009edb9190810190620103a9565b828281518110151562009eea57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050808060010191505062009dc4565b8195505050505050919050565b6000606060008062009f718662009f6289866200ce3990919063ffffffff16565b6200ce3990919063ffffffff16565b9250601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c04d4ef3601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306200a08860048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156200a0735780601f106200a047576101008083540402835291602001916200a073565b820191906000526020600020905b8154815290600101906020018083116200a05557829003601f168201915b50505050508c6200ce3990919063ffffffff16565b878a6040518663ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200a0c8959493929190620127d2565b6040805180830381600087803b1580156200a0e257600080fd5b505af11580156200a0f7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200a11d919081019062010416565b80925081935050508015156200a16a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200a161906201324a565b60405180910390fd5b6200a1828787601b6200e73e9092919063ffffffff16565b93505050509392505050565b6000606060008060006200a1a16200f962565b600088601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166369921c26826040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200a21d91906201257d565b602060405180830381600087803b1580156200a23857600080fd5b505af11580156200a24d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200a27391908101906201078e565b15156200a2b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200a2ae90620133c0565b60405180910390fd5b6000602760008d8152602001908152602001600020541115156200a312576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200a309906201317e565b60405180910390fd5b6200a33b8a6200a32c8d8a6200cbee90919063ffffffff16565b6200cc0e90919063ffffffff16565b9650601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a3793a618b6040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200a3b691906201257d565b602060405180830381600087803b1580156200a3d157600080fd5b505af11580156200a3e6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200a40c9190810190620103a9565b9350601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c04d4ef3601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16308a8d6040518563ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200a4af9493929190620129e6565b6040805180830381600087803b1580156200a4c957600080fd5b505af11580156200a4de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200a504919081019062010416565b80965081975050508480156200a52257506200a5218b856200d80c565b5b15156200a566576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200a55d90620133e2565b60405180910390fd5b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166369","921c26876040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200a5df91906201257d565b602060405180830381600087803b1580156200a5fa57600080fd5b505af11580156200a60f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200a63591908101906201078e565b15156200a679576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200a67090620133c0565b60405180910390fd5b6000602760008d8152602001908152602001600020541115156200a6d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200a6cb90620137bc565b60405180910390fd5b600260ff1660256000602760008f815260200190815260200160002054815260200190815260200160002060040160009054906101000a900460ff1660ff161415156200a758576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200a74f90620132f4565b60405180910390fd5b60256000602760008e815260200190815260200160002054815260200190815260200160002060c06040519081016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff1660ff1660ff16815260200160068201805480602002602001604051908101604052809291908181526020016000905b828210156200a902578382906000526020600020018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156200a8ed5780601f106200a8c1576101008083540402835291602001916200a8ed565b820191906000526020600020905b8154815290600101906020018083116200a8cf57829003601f168201915b5050505050815260200190600101906200a840565b50505050815250509250602660008460600151815260200190815260200160002091506004836080019060ff16908160ff16815250508260256000602760008f81526020019081526020016000205481526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604082015181600201556060820151816003015560808201518160040160006101000a81548160ff021916908360ff16021790555060a08201518160060190805190602001906200aa039291906200f9b2565b50905050600197507fb2d27e2e92f5b0c643d08adb4b91ca63ced07e12c366c14d111cc851f975e92b8b846000015160046040516200aa459392919062013a2d565b60405180910390a1505050505050509392505050565b6000606060008060008087601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166369921c26826040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200aadf91906201257d565b602060405180830381600087803b1580156200aafa57600080fd5b505af11580156200ab0f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200ab3591908101906201078e565b15156200ab79576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200ab7090620133c0565b60405180910390fd5b6200ab8e89876200cc0e90919063ffffffff16565b9550601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c04d4ef3601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1630898c6040518563ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200ac31949392919062012c62565b6040805180830381600087803b1580156200ac4b57600080fd5b505af11580156200ac60573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200ac86919081019062010416565b80955081965050508315156200acd3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200acca9062013778565b60405180910390fd5b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166369921c26866040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200ad4c91906201257d565b602060405180830381600087803b1580156200ad6757600080fd5b505af11580156200ad7c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200ada291908101906201078e565b15156200ade6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200addd90620133c0565b60405180910390fd5b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a3793a618a6040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200ae5f91906201257d565b602060405180830381600087803b1580156200ae7a57600080fd5b505af11580156200ae8f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200aeb59190810190620103a9565b9250602460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156200af49576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200af4090620136ce565b60405180910390fd5b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fbcbc0f18a6040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200afc291906201257d565b602060405180830381600087803b1580156200afdd57600080fd5b505af11580156200aff2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200b0189190810190620103a9565b91508173ffffffffffffffffffffffffffffffffffffffff166395a0c79630601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660006040518463ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200b098939291906201311d565b602060405180830381600087803b1580156200b0b357600080fd5b505af11580156200b0c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200b0ee91908101906201078e565b5060238390806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506001602460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001965050505050505092915050565b60008060256000848152602001908152602001600020600201541115156200b21c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200b21390620137bc565b60405180910390fd5b60256000838152602001908152602001600020600201549050919050565b60058054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156200b2d45780601f106200b2a8576101008083540402835291602001916200b2d4565b820191906000526020600020905b8154815290600101906020018083116200b2b657829003601f168201915b505050505081565b600060606200b2ea6200f962565b606060008060006200b2fb6200faa0565b6200b3098c8c8c8c62006d7f565b9b508a516003026040519080825280602002602001820160405280156200b33f5781602001602082028038833980820191505090505b509450600092505b8a518310156200b836576000602760008d868151811015156200b36657fe5b90602001906020020151815260200190815260200160002054116200b4356040805190810160405280600f81526020017f20646f65736e27742065786973742100000000000000000000000000000000008152506200b4266200b3e18f888151811015156200b3d157fe5b906020019060200201516200ef9c565b6040805190810160405280600781526020017f6e6f74654e6f20000000000000000000000000000000000000000000000000008152506200f0fe90919063ffffffff16565b6200f0fe90919063ffffffff16565b9015156200b47b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200b47291906201315a565b60405180910390fd5b5060256000602760008e878151811015156200b49357fe5b90602001906020020151815260200190815260200160002054815260200190815260200160002060c06040519081016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff1660ff1660ff16815260200160068201805480602002602001604051908101604052809291908181526020016000905b828210156200b63e5783829060005260206000200180546001816001161561010002031660","02900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156200b6295780601f106200b5fd576101008083540402835291602001916200b629565b820191906000526020600020905b8154815290600101906020018083116200b60b57829003601f168201915b5050505050815260200190600101906200b57c565b505050508152505095506200b65786600001516200ecbf565b156200b70d6040805190810160405280601181526020017f20686173206265656e20657870697265640000000000000000000000000000008152506200b6fe6200b6b98f888151811015156200b6a957fe5b906020019060200201516200ef9c565b6040805190810160405280600781526020017f6e6f74654e6f20000000000000000000000000000000000000000000000000008152506200f0fe90919063ffffffff16565b6200f0fe90919063ffffffff16565b9015156200b753576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200b74a91906201315a565b60405180910390fd5b506200b76386600001516200df18565b15156200b7a7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200b79e90620132f4565b60405180910390fd5b6200b7e48b848151811015156200b7ba57fe5b906020019060200201518d60028151811015156200b7d457fe5b9060200190602002015162004366565b15156200b828576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200b81f9062013316565b60405180910390fd5b82806001019350506200b347565b600091505b8a518210156200bf4d5760256000602760008e868151811015156200b85c57fe5b90602001906020020151815260200190815260200160002054815260200190815260200160002060c06040519081016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff1660ff1660ff16815260200160068201805480602002602001604051908101604052809291908181526020016000905b828210156200ba07578382906000526020600020018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156200b9f25780601f106200b9c6576101008083540402835291602001916200b9f2565b820191906000526020600020905b8154815290600101906020018083116200b9d457829003601f168201915b5050505050815260200190600101906200b945565b505050508152505095506000602860008e60028151811015156200ba2757fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008860000151815260200190815260200160002060006101000a81548160ff0219169083151502179055506200bac08c60028151811015156200baab57fe5b9060200190602002015187600001516200cc2e565b602960008e60028151811015156200bad457fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090805190602001906200bb2d9291906200f8c3565b506001602860008e60038151811015156200bb4457fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008860000151815260200190815260200160002060006101000a81548160ff021916908315150217905550602960008d60038151811015156200bbc857fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020866000015190806001815401808255809150509060018203906000526020600020016000909192909190915055508b60038151811015156200bc4a57fe5b90602001906020020151866020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508560256000602760008f878151811015156200bca357fe5b9060200190602002015181526020019081526020016000205481526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604082015181600201556060820151816003015560808201518160040160006101000a81548160ff021916908360ff16021790555060a08201518160060190805190602001906200bd6e9291906200f9b2565b50905050603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166360f95a028d88600001518d6040518463ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200bdf39392919062012f64565b606060405180830381600087803b1580156200be0e57600080fd5b505af11580156200be23573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200be499190810190620107ba565b80925081955050508315156200be96576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200be8d906201379a565b60405180910390fd5b8060006002811015156200bea657fe5b602002015185836003028151811015156200bebd57fe5b90602001906020020181815250508060016002811015156200bedb57fe5b602002015185600184600302018151811015156200bef557fe5b90602001906020020181815250508a828151811015156200bf1257fe5b9060200190602002015185600284600302018151811015156200bf3157fe5b906020019060200201818152505081806001019250506200b83b565b6001859750975050505050505094509492505050565b60008082840190508381101515156200bfb3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200bfaa906201337c565b60405180910390fd5b8091505092915050565b600483511480156200bfd0575060058251145b80156200bfde575060008151115b15156200c022576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200c01990620135be565b60405180910390fd5b60008260028151811015156200c03457fe5b906020019060200201511180156200c0655750600a8260028151811015156200c05957fe5b90602001906020020151105b80156200c09357506200c0776200d97e565b8260048151811015156200c08757fe5b90602001906020020151115b15156200c0d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200c0ce9062013844565b60405180910390fd5b60008260038151811015156200c0e957fe5b9060200190602002015111156200c1dd576200c1046200d97e565b8260038151811015156200c11457fe5b906020019060200201511115156200c163576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200c15a9062013228565b60405180910390fd5b8160038151811015156200c17357fe5b906020019060200201518260048151811015156200c18d57fe5b906020019060200201511115156200c1dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200c1d390620136f0565b60405180910390fd5b5b60008260008151811015156200c1ef57fe5b906020019060200201511180156200c22157506101f58260008151811015156200c21557fe5b90602001906020020151105b15156200c265576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200c25c9062013976565b60405180910390fd5b60008260018151811015156200c27757fe5b906020019060200201511115156200c2c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200c2bd9062013954565b60405180910390fd5b60008160008151811015156200c2d857fe5b90602001906020020151511180156200c30c575060ff8160008151811015156200c2fe57fe5b906020019060200201515111155b15156200c350576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200c3479062013756565b60405180910390fd5b602a60008360018151811015156200c36457fe5b90602001906020020151815260200190815260200160002060008360028151811015156200c38e57fe5b90602001906020020151815260200190815260200160002060009054906101000a900460ff161515156200c3f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200c3f09062013602565b60405180910390fd5b505050565b6060600060606000806200c4148989896200f332565b92506200c421896200ea40565b809a5081955050508315156200c46e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200c465906201348c565b60405180910390fd5b8860038151811015156200c47e57fe5b906020019060200201519150602460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156200c51b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200c5129062013514565b60405180910390fd5b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c04d4ef3601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1630868a6040518563ffffffff167c0100000000000000000000000000000000000000000000","0000000000000281526004016200c5bc949392919062012ccc565b6040805180830381600087803b1580156200c5d657600080fd5b505af11580156200c5eb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200c611919081019062010416565b80955081925050508315156200c65e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200c655906201328e565b60405180910390fd5b88945050505050949350505050565b606060006060806060600060028251026040519080825280602002602001820160405280156200c6ac5781602001602082028038833980820191505090505b5092508860008151811015156200c6bf57fe5b906020019060200201516040519080825280602002602001820160405280156200c6f85781602001602082028038833980820191505090505b509150600090505b8860008151811015156200c71057fe5b906020019060200201518110156200c9ae5760008114156200c74a576200c7426001896200f2d890919063ffffffff16565b94506200c824565b6200c8216001602b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636d4ce63c6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156200c7d757600080fd5b505af11580156200c7ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200c8129190810190620109c1565b6200f2d890919063ffffffff16565b94505b6001602860008c60038151811015156200c83a57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087815260200190815260200160002060006101000a81548160ff021916908315150217905550602960008b60038151811015156200c8ba57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208590806001815401808255809150509060018203906000526020600020016000909192909190915055506200c9838a60038151811015156200c93c57fe5b9060200190602002015188878c60018151811015156200c95857fe5b906020019060200201518d60028151811015156200c97257fe5b90602001906020020151866200638e565b82828151811015156200c99257fe5b906020019060200201818152505080806001019150506200c700565b8195505050505050949350505050565b6060806000806200c9ce6200faa0565b600060028951026040519080825280602002602001820160405280156200ca045781602001602082028038833980820191505090505b509450600090505b88518110156200cbdf57602760008a838151811015156200ca2957fe5b906020019060200201518152602001908152602001600020549250603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166360f95a0289858a6040518463ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200cac19392919062012f64565b606060405180830381600087803b1580156200cadc57600080fd5b505af11580156200caf1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200cb179190810190620107ba565b80935081955050508160006002811015156200cb2f57fe5b602002015185826002028151811015156200cb4657fe5b90602001906020020181815250508160016002811015156200cb6457fe5b602002015185600183600202018151811015156200cb7e57fe5b90602001906020020181815250508315156200cbd1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200cbc8906201379a565b60405180910390fd5b80806001019150506200ca0c565b84955050505050509392505050565b60606200cc06836200cc00846200f42b565b6200f470565b905092915050565b60606200cc26836200cc20846200f64a565b6200f470565b905092915050565b6060600060606000806001602860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600088815260200190815260200160002060006101000a81548160ff021916908315150217905515156200cce3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200ccda9062013822565b60405180910390fd5b602960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020935060018480549050036040519080825280602002602001820160405280156200cd5b5781602001602082028038833980820191505090505b509250600090505b82518110156200ce2c57811580156200cd9457508584828154811015156200cd8757fe5b9060005260206000200154145b156200cd9f57600191505b81156200cde65783600182018154811015156200cdb857fe5b906000526020600020015483828151811015156200cdd257fe5b90602001906020020181815250506200ce1e565b83818154811015156200cdf557fe5b906000526020600020015483828151811015156200ce0f57fe5b90602001906020020181815250505b80806001019150506200cd63565b8294505050505092915050565b60606200ce4783836200f470565b905092915050565b60008084600001846040518082805190602001908083835b6020831015156200ce8e57805182526020820191506020810190506020830392506200ce67565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060000154905060008111156200d04b577f77da9cffaff6366f6be90a928ae84ae14a77d3138ce236f9481aa71d15a9c47c32336040805190810160405280600681526020017f4d4f4449465900000000000000000000000000000000000000000000000000008152508789600001896040518082805190602001908083835b6020831015156200cf6757805182526020820191506020810190506020830392506200cf40565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206001016040516200cfb0959493929190620125ee565b60405180910390a18285600001856040518082805190602001908083835b6020831015156200cff557805182526020820191506020810190506020830392506200cfce565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060010190805190602001906200d0409291906200fa19565b50600191506200d1bb565b8285600001856040518082805190602001908083835b6020831015156200d08857805182526020820191506020810190506020830392506200d061565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060010190805190602001906200d0d39291906200fa19565b508460010180548091906001016200d0ec91906200fac2565b90506001810185600001856040518082805190602001908083835b6020831015156200d12e57805182526020820191506020810190506020830392506200d107565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020600001819055508385600101828154811015156200d17b57fe5b906000526020600020906002020160000190805190602001906200d1a19291906200fa19565b508460020160008154809291906001019190505550600091505b509392505050565b60008084600001846040518082805190602001908083835b6020831015156200d20257805182526020820191506020810190506020830392506200d1db565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060000154905060008111156200d24f57600091506200d3bf565b8285600001856040518082805190602001908083835b6020831015156200d28c57805182526020820191506020810190506020830392506200d265565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060010190805190602001906200d2d79291906200fa19565b508460010180548091906001016200d2f091906200fac2565b90506001810185600001856040518082805190602001908083835b6020831015156200d33257805182526020820191506020810190506020830392506200d30b565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020600001819055508385600101828154811015156200d37f57fe5b906000526020600020906002020160000190805190602001906200d3a59291906200fa19565b508460020160008154809291906001019190505550600191505b509392505050565b60606000806060600080602960008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002094506000858054905014156200d47a57848054806020026020016040519081016040528092919081815260200182805480156200d46d57602002820191906000526020600020905b8154815260200190600101908083116200d458575b505050505095506200d5a1565b8480549050881015156200d4c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200d4bc9062013734565b60405180910390fd5b84805490508711156200d4df57848054905093506200d4e3565b8693505b60008411156200d4f6578784036200d4f9565b60005b6040519080825280602002602001820160405280156200d5285781602001602082028038833980820191505090505b509250600091508790505b838110156200d59d576025600086838154811015156200d54f57fe5b906000526020600020015481526020019081526020016000206002015483838060010194508151811015156200d58157fe5b906020019060200201818152505080806001019150506200d533565b8295505b","50505050509392505050565b60008083600001836040518082805190602001908083835b6020831015156200d5ec57805182526020820191506020810190506020830392506200d5c5565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060000154905060008114156200d63957600091506200d805565b7f77da9cffaff6366f6be90a928ae84ae14a77d3138ce236f9481aa71d15a9c47c32336040805190810160405280600681526020017f44454c45544500000000000000000000000000000000000000000000000000008152508688600001886040518082805190602001908083835b6020831015156200d6cf57805182526020820191506020810190506020830392506200d6a8565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206001016040516200d718959493929190620125ee565b60405180910390a183600001836040518082805190602001908083835b6020831015156200d75c57805182526020820191506020810190506020830392506200d735565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206000808201600090556001820160006200d7aa91906200faf7565b5050600184600101600183038154811015156200d7c357fe5b906000526020600020906002020160010160006101000a81548160ff021916908315150217905550836002016000815480929190600190039190505550600191505b5092915050565b600080600080602760008781526020019081526020016000205492506000831115156200d870576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200d867906201317e565b60405180910390fd5b6025600084815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150602660006025600086815260200190815260200160002060030154815260200190815260200160002090508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff1614806200d96057508473ffffffffffffffffffffffffffffffffffffffff168160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b156200d97057600093506200d975565b600193505b50505092915050565b6000804290508091505090565b600080600080601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a3793a61876040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200da0a91906201257d565b602060405180830381600087803b1580156200da2557600080fd5b505af11580156200da3a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200da609190810190620103a9565b9050601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c04d4ef3601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16308a896040518563ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200db03949392919062012912565b6040805180830381600087803b1580156200db1d57600080fd5b505af11580156200db32573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200db58919081019062010416565b80935081945050508180156200db7657506200db7588826200f72e565b5b15156200dbba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200dbb19062013800565b60405180910390fd5b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166369921c26846040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200dc3391906201257d565b602060405180830381600087803b1580156200dc4e57600080fd5b505af11580156200dc63573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200dc8991908101906201078e565b15156200dccd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200dcc490620133c0565b60405180910390fd5b60019350505050949350505050565b60008060256000848152602001908152602001600020905060028160040160006101000a81548160ff021916908360ff1602179055508060256000858152602001908152602001600020600082015481600001556001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060028201548160020155600382015481600301556004820160009054906101000a900460ff168160040160006101000a81548160ff021916908360ff16021790555060068201816006019080546200ddf19291906200f84c565b509050506001915050919050565b606082600001826040518082805190602001908083835b6020831015156200de3d57805182526020820191506020810190506020830392506200de16565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206001018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156200df0b5780601f106200dedf576101008083540402835291602001916200df0b565b820191906000526020600020905b8154815290600101906020018083116200deed57829003601f168201915b5050505050905092915050565b60006200df246200f962565b60006025600085815260200190815260200160002060c06040519081016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff1660ff1660ff16815260200160068201805480602002602001604051908101604052809291908181526020016000905b828210156200e0bd578382906000526020600020018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156200e0a85780601f106200e07c576101008083540402835291602001916200e0a8565b820191906000526020600020905b8154815290600101906020018083116200e08a57829003601f168201915b5050505050815260200190600101906200dffb565b50505050815250509150816080015160ff16600260ff1614156200e0e557600192506200e206565b602660008360600151815260200190815260200160002090506000816004015414156200e11657600092506200e206565b6200e1206200d97e565b816004015410156200e205576002826080019060ff16908160ff168152505081602560008681526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604082015181600201556060820151816003015560808201518160040160006101000a81548160ff021916908360ff16021790555060a08201518160060190805190602001906200e1f79291906200f9b2565b50905050600192506200e206565b5b5050919050565b600081600201549050919050565b60606000806000806000602760008c8152602001908152602001600020541115156200e27e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200e275906201317e565b60405180910390fd5b6200e2938a866200cbee90919063ffffffff16565b9450600093505b88518410156200e310576200e2d189858151811015156200e2b757fe5b90602001906020020151866200ce3990919063ffffffff16565b94506200e30088858151811015156200e2e657fe5b90602001906020020151866200ce3990919063ffffffff16565b945083806001019450506200e29a565b6200e32587866200cc0e90919063ffffffff16565b9450601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c04d4ef3601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1630888a6040518563ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200e3c8949392919062012b24565b6040805180830381600087803b1580156200e3e257600080fd5b505af11580156200e3f7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200e41d919081019062010416565b8093508194505050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a3793a61886040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200e49e91906201257d565b602060405180830381600087803b1580156200e4b957600080fd5b505af11580156200e4ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200e4f49190810190620103a9565b90508180156200e50c57506200e50b8a826200d80c565b5b15156200e550576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200e5479062013866565b60405180910390fd5b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166369921c26846040518263ffffffff167c01000000000000","000000000000000000000000000000000000000000000281526004016200e5c991906201257d565b602060405180830381600087803b1580156200e5e457600080fd5b505af11580156200e5f9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200e61f91908101906201078e565b15156200e663576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200e65a90620133c0565b60405180910390fd5b600460ff1660256000602760008e815260200190815260200160002054815260200190815260200160002060040160009054906101000a900460ff1660ff16141580156200e6ee5750600560ff1660256000602760008e815260200190815260200160002054815260200190815260200160002060040160009054906101000a900460ff1660ff1614155b15156200e732576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200e7299062013404565b60405180910390fd5b50505050505050505050565b60008084600001846040518082805190602001908083835b6020831015156200e77d57805182526020820191506020810190506020830392506200e756565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060000154905060008111156200e93a577f77da9cffaff6366f6be90a928ae84ae14a77d3138ce236f9481aa71d15a9c47c32336040805190810160405280600681526020017f4d4f4449465900000000000000000000000000000000000000000000000000008152508789600001896040518082805190602001908083835b6020831015156200e85657805182526020820191506020810190506020830392506200e82f565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206001016040516200e89f959493929190620125ee565b60405180910390a18285600001856040518082805190602001908083835b6020831015156200e8e457805182526020820191506020810190506020830392506200e8bd565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060010190805190602001906200e92f9291906200fa19565b50600191506200e93f565b600091505b509392505050565b60608060008060008092505b87518310156200e99a576200e98a88848151811015156200e97057fe5b90602001906020020151856200cc0e90919063ffffffff16565b935082806001019350506200e953565b600091505b86518210156200e9e6576200e9d687838151811015156200e9bc57fe5b90602001906020020151856200cbee90919063ffffffff16565b935081806001019250506200e99f565b600090505b85518110156200ea32576200ea2286828151811015156200ea0857fe5b90602001906020020151856200ce3990919063ffffffff16565b935080806001019150506200e9eb565b839450505050509392505050565b6000606080600080600086516040519080825280602002602001820160405280156200ea7b5781602001602082028038833980820191505090505b509350600090505b86518110156200ecaf5760018114806200eae1575086818151811015156200eaa757fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff16145b156200eb515786818151811015156200eaf657fe5b9060200190602002015184828151811015156200eb0f57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506200eca1565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663accfbdd988838151811015156200eb9e57fe5b906020019060200201516040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200ebe291906201257d565b6040805180830381600087803b1580156200ebfc57600080fd5b505af11580156200ec11573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200ec37919081019062010416565b80945081935050508215156200ec5457600084955095506200ecb6565b8184828151811015156200ec6457fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505b80806001019150506200ea83565b8284955095505b50505050915091565b60006200eccb6200f962565b60006025600085815260200190815260200160002060c06040519081016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff1660ff1660ff16815260200160068201805480602002602001604051908101604052809291908181526020016000905b828210156200ee64578382906000526020600020018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156200ee4f5780601f106200ee23576101008083540402835291602001916200ee4f565b820191906000526020600020905b8154815290600101906020018083116200ee3157829003601f168201915b5050505050815260200190600101906200eda2565b50505050815250509150816080015160ff16600360ff1614156200ee8c57600192506200ef95565b602660008360600151815260200190815260200160002090506200eeaf6200d97e565b816005015410156200ef94576003826080019060ff16908160ff168152505081602560008681526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604082015181600201556060820151816003015560808201518160040160006101000a81548160ff021916908360ff16021790555060a08201518160060190805190602001906200ef869291906200f9b2565b50905050600192506200ef95565b5b5050919050565b606060008060606000808614156200efec576040805190810160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525094506200f0f5565b8593505b6000841415156200f019578280600101935050600a848115156200f01057fe5b0493506200eff0565b826040519080825280601f01601f1916602001820160405280156200f04d5781602001602082028038833980820191505090505b5091506001830390505b6000861415156200f0f157600a868115156200f06f57fe5b066030017f0100000000000000000000000000000000000000000000000000000000000000028282806001900393508151811015156200f0ab57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a868115156200f0e857fe5b0495506200f057565b8194505b50505050919050565b606080606080606060008088955087945084518651016040519080825280601f01601f1916602001820160405280156200f1475781602001602082028038833980820191505090505b50935083925060009150600090505b85518110156200f20d5785818151811015156200f16f57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f01000000000000000000000000000000000000000000000000000000000000000283838060010194508151811015156200f1cf57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080806001019150506200f156565b600090505b84518110156200f2c95784818151811015156200f22b57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f01000000000000000000000000000000000000000000000000000000000000000283838060010194508151811015156200f28b57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080806001019150506200f212565b83965050505050505092915050565b6000808383111515156200f323576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200f31a90620134d0565b60405180910390fd5b82840390508091505092915050565b60608060008060008092505b87518310156200f385576200f37588848151811015156200f35b57fe5b90602001906020020151856200cc0e90919063ffffffff16565b935082806001019350506200f33e565b600091505b86518210156200f3d1576200f3c187838151811015156200f3a757fe5b90602001906020020151856200cbee90919063ffffffff16565b935081806001019250506200f38a565b600090505b85518110156200f41d576200f40d86828151811015156200f3f357fe5b90602001906020020151856200ce3990919063ffffffff16565b935080806001019150506200f3d6565b839450505050509392505050565b606060206040519080825280601f01601f1916602001820160405280156200f4625781602001602082028038833980820191505090505b509050816020820152919050565b606080606080606060008088955087945084518651016040519080825280601f01601f1916602001820160405280156200f4b95781602001602082028038833980820191505090505b50935083925060009150600090505b85518110156200f57f5785818151811015156200f4e157fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f01000000000000000000000000000000000000000000000000000000000000000283838060010194508151811015156200f54157fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080806001019150506200f4c8565b600090505b84518110156200f63b5784818151811015156200f59d57fe5b90602001","01517f010000000000000000000000000000000000000000000000000000000000000090047f01000000000000000000000000000000000000000000000000000000000000000283838060010194508151811015156200f5fd57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080806001019150506200f584565b83965050505050505092915050565b6060600080836c0100000000000000000000000002915060146040519080825280601f01601f1916602001820160405280156200f6965781602001602082028038833980820191505090505b509250600090505b60148110156200f7275781816014811015156200f6b757fe5b1a7f01000000000000000000000000000000000000000000000000000000000000000283828151811015156200f6e957fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080806001019150506200f69e565b5050919050565b600080600060266000868152602001908152602001600020600001541115156200f78f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200f78690620134ae565b60405180910390fd5b6026600085815260200190815260200160002090508273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff1614806200f83057508273ffffffffffffffffffffffffffffffffffffffff168160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b156200f84057600091506200f845565b600191505b5092915050565b8280548282559060005260206000209081019282156200f8b05760005260206000209182015b828111156200f8af57828290805460018160011615610100020316600290046200f89e9291906200fb43565b50916001019190600101906200f872565b5b5090506200f8bf91906200fbd1565b5090565b8280548282559060005260206000209081019282156200f902579160200282015b828111156200f9015782518255916020019190600101906200f8e4565b5b5090506200f91191906200fc02565b5090565b60c06040519081016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081526020016000815260200160008152602001600081525090565b60c06040519081016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001600060ff168152602001606081525090565b8280548282559060005260206000209081019282156200fa06579160200282015b828111156200fa055782518290805190602001906200f9f49291906200fc2a565b50916020019190600101906200f9d3565b5b5090506200fa1591906200fbd1565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200fa5c57805160ff19168380011785556200fa8d565b828001600101855582156200fa8d579182015b828111156200fa8c5782518255916020019190600101906200fa6f565b5b5090506200fa9c91906200fc02565b5090565b6040805190810160405280600290602082028038833980820191505090505090565b8154818355818111156200faf2576002028160020283600052602060002091820191016200faf191906200fcb1565b5b505050565b50805460018160011615610100020316600290046000825580601f106200fb1f57506200fb40565b601f0160209004906000526020600020908101906200fb3f91906200fc02565b5b50565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200fb7e57805485556200fbbe565b828001600101855582156200fbbe57600052602060002091601f016020900482015b828111156200fbbd5782548255916001019190600101906200fba0565b5b5090506200fbcd91906200fc02565b5090565b6200fbff91905b808211156200fbfb57600081816200fbf191906200faf7565b506001016200fbd8565b5090565b90565b6200fc2791905b808211156200fc235760008160009055506001016200fc09565b5090565b90565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200fc6d57805160ff19168380011785556200fc9e565b828001600101855582156200fc9e579182015b828111156200fc9d5782518255916020019190600101906200fc80565b5b5090506200fcad91906200fc02565b5090565b6200fcf691905b808211156200fcf257600080820160006200fcd491906200faf7565b6001820160006101000a81549060ff0219169055506002016200fcb8565b5090565b90565b60006200fd07823562013e16565b905092915050565b60006200fd1d825162013e16565b905092915050565b600082601f83011215156200fd3957600080fd5b81356200fd506200fd4a8262013ab5565b62013a87565b915081818352602084019350602081019050838560208402820111156200fd7657600080fd5b60005b838110156200fdaa57816200fd8f88826200fcf9565b8452602084019350602083019250506001810190506200fd79565b5050505092915050565b600082601f83011215156200fdc857600080fd5b60046200fddf6200fdd98262013ade565b62013a87565b915081838560208402820111156200fdf657600080fd5b60005b838110156200fe2a57816200fe0f88826201017b565b8452602084019350602083019250506001810190506200fdf9565b5050505092915050565b600082601f83011215156200fe4857600080fd5b81356200fe5f6200fe598262013b01565b62013a87565b9150818183526020840193506020810190508360005b838110156200fea957813586016200fe8e888262010191565b8452602084019350602083019250506001810190506200fe75565b5050505092915050565b600082601f83011215156200fec757600080fd5b81356200fede6200fed88262013b2a565b62013a87565b915081818352602084019350602081019050838560208402820111156200ff0457600080fd5b60005b838110156200ff3857816200ff1d88826201024d565b8452602084019350602083019250506001810190506200ff07565b5050505092915050565b600082601f83011215156200ff5657600080fd5b81356200ff6d6200ff678262013b53565b62013a87565b9150818183526020840193506020810190508360005b838110156200ffb757813586016200ff9c888262010263565b8452602084019350602083019250506001810190506200ff83565b5050505092915050565b600082601f83011215156200ffd557600080fd5b81516200ffec6200ffe68262013b53565b62013a87565b9150818183526020840193506020810190508360005b838110156201003657815186016201001b8882620102c1565b84526020840193506020830192505060018101905062010002565b5050505092915050565b600082601f83011215156201005457600080fd5b60026201006b620100658262013b7c565b62013a87565b915081838560208402820111156201008257600080fd5b60005b83811015620100b657816201009b888262010393565b84526020840193506020830192505060018101905062010085565b5050505092915050565b600082601f8301121515620100d457600080fd5b8135620100eb620100e58262013b9f565b62013a87565b915081818352602084019350602081019050838560208402820111156201011157600080fd5b60005b838110156201014557816201012a88826201037d565b84526020840193506020830192505060018101905062010114565b5050505092915050565b60006201015d823562013e36565b905092915050565b600062010173825162013e36565b905092915050565b600062010189823562013e42565b905092915050565b600082601f8301121515620101a557600080fd5b8135620101bc620101b68262013bc8565b62013a87565b91508082526020830160208301858383011115620101d957600080fd5b620101e683828462013e88565b50505092915050565b600082601f83011215156201020357600080fd5b81356201021a620102148262013bf5565b62013a87565b915080825260208301602083018583830111156201023757600080fd5b6201024483828462013e88565b50505092915050565b60006201025b823562013e4c565b905092915050565b600082601f83011215156201027757600080fd5b81356201028e620102888262013c22565b62013a87565b91508082526020830160208301858383011115620102ab57600080fd5b620102b883828462013e88565b50505092915050565b600082601f8301121515620102d557600080fd5b8151620102ec620102e68262013c22565b62013a87565b915080825260208301602083018583830111156201030957600080fd5b6201031683828462013e97565b50505092915050565b600082601f83011215156201033357600080fd5b81356201034a620103448262013c4f565b62013a87565b915080825260208301602083018583830111156201036757600080fd5b6201037483828462013e88565b50505092915050565b60006201038b823562013e56565b905092915050565b6000620103a1825162013e56565b905092915050565b600060208284031215620103bc57600080fd5b6000620103cc848285016200fd0f565b91505092915050565b60008060a08385031215620103e957600080fd5b6000620103f9858286016200fcf9565b92505060206201040c858286016200fdb4565b9150509250929050565b600080604083850312156201042a57600080fd5b60006201043a858286016200fd0f565b92505060206201044d8582860162010165565b9150509250929050565b600080600060c084860312156201046d57600080fd5b60006201047d868287016200fcf9565b935050602062010490868287016201037d565b9250506040620104a3868287016200fdb4565b9150509250925092565b60008060008060e08587031215620104c457600080fd5b6000620104d4878288016200fcf9565b9450506020620104e7878288016201037d565b9350506040620104fa878288016201037d565b92505060606201050d878288016200fdb4565b91505092959194509250565b60008060008060008060c087890312156201053357600080fd5b60006201054389828a016200fcf9565b96505060206201055689828a016201037d565b95505060406201056989828a016201037d565b94505060606201057c89828a016201037d565b93505060806201058f89828a016201037d565b92505060a0620105a289828a016201037d56","5b9150509295509295509295565b60008060008060e08587031215620105c657600080fd5b600085013567ffffffffffffffff811115620105e157600080fd5b620105ef878288016200fd25565b945050602085013567ffffffffffffffff8111156201060d57600080fd5b6201061b87828801620100c0565b935050604085013567ffffffffffffffff8111156201063957600080fd5b62010647878288016200ff42565b92505060606201065a878288016200fdb4565b91505092959194509250565b6000608082840312156201067957600080fd5b600062010689848285016200fdb4565b91505092915050565b600060208284031215620106a557600080fd5b600082015167ffffffffffffffff811115620106c057600080fd5b620106ce848285016200ffc1565b91505092915050565b60008060008060e08587031215620106ee57600080fd5b600085013567ffffffffffffffff8111156201070957600080fd5b6201071787828801620100c0565b945050602085013567ffffffffffffffff8111156201073557600080fd5b62010743878288016200fd25565b935050604085013567ffffffffffffffff8111156201076157600080fd5b6201076f878288016200feb3565b925050606062010782878288016200fdb4565b91505092959194509250565b600060208284031215620107a157600080fd5b6000620107b18482850162010165565b91505092915050565b60008060608385031215620107ce57600080fd5b6000620107de8582860162010165565b9250506020620107f18582860162010040565b9150509250929050565b6000602082840312156201080e57600080fd5b600082013567ffffffffffffffff8111156201082957600080fd5b6201083784828501620101ef565b91505092915050565b60008060a083850312156201085457600080fd5b600083013567ffffffffffffffff8111156201086f57600080fd5b6201087d85828601620101ef565b925050602062010890858286016200fdb4565b9150509250929050565b60008060408385031215620108ae57600080fd5b600083013567ffffffffffffffff811115620108c957600080fd5b620108d785828601620101ef565b925050602083013567ffffffffffffffff811115620108f557600080fd5b6201090385828601620101ef565b9150509250929050565b600080600060c084860312156201092357600080fd5b600084013567ffffffffffffffff8111156201093e57600080fd5b6201094c86828701620101ef565b935050602084013567ffffffffffffffff8111156201096a57600080fd5b6201097886828701620101ef565b92505060406201098b868287016200fdb4565b9150509250925092565b600060208284031215620109a857600080fd5b6000620109b8848285016201037d565b91505092915050565b600060208284031215620109d457600080fd5b6000620109e48482850162010393565b91505092915050565b6000806040838503121562010a0157600080fd5b600062010a11858286016201037d565b925050602062010a24858286016200fcf9565b9150509250929050565b600080600060c0848603121562010a4457600080fd5b600062010a54868287016201037d565b935050602062010a67868287016200fcf9565b925050604062010a7a868287016200fdb4565b9150509250925092565b60008060008060e0858703121562010a9b57600080fd5b600062010aab878288016201037d565b945050602062010abe878288016200fcf9565b935050604085013567ffffffffffffffff81111562010adc57600080fd5b62010aea878288016201031f565b925050606062010afd878288016200fdb4565b91505092959194509250565b60008060a0838503121562010b1d57600080fd5b600062010b2d858286016201037d565b925050602062010b40858286016200fdb4565b9150509250929050565b6000806000806000610100868803121562010b6457600080fd5b600062010b74888289016201037d565b955050602086013567ffffffffffffffff81111562010b9257600080fd5b62010ba0888289016200fe34565b945050604086013567ffffffffffffffff81111562010bbe57600080fd5b62010bcc888289016200fe34565b935050606062010bdf888289016200fcf9565b925050608062010bf2888289016200fdb4565b9150509295509295909350565b60008060008060e0858703121562010c1657600080fd5b600062010c26878288016201037d565b945050602062010c39878288016201037d565b935050604062010c4c878288016200fcf9565b925050606062010c5f878288016200fdb4565b91505092959194509250565b6000806000806000610100868803121562010c8557600080fd5b600062010c95888289016201037d565b955050602062010ca8888289016201037d565b945050604062010cbb888289016201014f565b935050606062010cce888289016200fcf9565b925050608062010ce1888289016200fdb4565b9150509295509295909350565b6000806000806080858703121562010d0557600080fd5b600062010d15878288016201037d565b945050602062010d28878288016201037d565b935050604062010d3b878288016201037d565b925050606062010d4e878288016200fcf9565b91505092959194509250565b62010d658162013dbf565b82525050565b600062010d788262013ceb565b80845260208401935062010d8c8362013c7c565b60005b8281101562010dc45762010da586835162010d5a565b62010db08262013d64565b915060208601955060018101905062010d8f565b50849250505092915050565b62010ddb8162013cf6565b62010de68262013c89565b60005b8281101562010e1e5762010dff85835162011055565b62010e0a8262013d71565b915060208501945060018101905062010de9565b5050505050565b600062010e328262013d01565b8084526020840193508360208202850162010e4d8562013c93565b60005b8481101562010e8c57838303885262010e6b838351620110a2565b925062010e788262013d7e565b915060208801975060018101905062010e50565b508196508694505050505092915050565b600062010eaa8262013d0c565b80845260208401935062010ebe8362013ca0565b60005b8281101562010ef65762010ed78683516201118e565b62010ee28262013d8b565b915060208601955060018101905062010ec1565b50849250505092915050565b600062010f0f8262013d17565b8084526020840193508360208202850162010f2a8562013cad565b60005b8481101562010f6957838303885262010f48838351620111db565b925062010f558262013d98565b915060208801975060018101905062010f2d565b508196508694505050505092915050565b600062010f878262013d22565b80845260208401935062010f9b8362013cba565b60005b8281101562010fd35762010fb48683516201255b565b62010fbf8262013da5565b915060208601955060018101905062010f9e565b50849250505092915050565b600062010fec8262013d2d565b808452602084019350620110008362013cc7565b60005b828110156201103857620110198683546201255b565b620110248262013db2565b915060208601955060018101905062011003565b50849250505092915050565b6201104f8162013ddf565b82525050565b620110608162013deb565b82525050565b6000620110738262013d43565b8084526201108981602086016020860162013e97565b620110948162013ecd565b602085010191505092915050565b6000620110af8262013d38565b808452620110c581602086016020860162013e97565b620110d08162013ecd565b602085010191505092915050565b600081546001811660008114620110fe57600181146201111f5762011164565b607f600283041680865260ff19831660208701526040860193505062011164565b60028204808652602086019550620111378562013cd9565b60005b828110156201115b578154818901526001820191506020810190506201113a565b80880195505050505b505092915050565b620111778162013e60565b82525050565b620111888162013e74565b82525050565b620111998162013df5565b82525050565b6000620111ac8262013d59565b808452620111c281602086016020860162013e97565b620111cd8162013ecd565b602085010191505092915050565b6000620111e88262013d4e565b808452620111fe81602086016020860162013e97565b620112098162013ecd565b602085010191505092915050565b6000601382527f6e6f746520646f65736e277420657869737421000000000000000000000000006020830152604082019050919050565b6000601782527f466f7262626964656e206765744e6f746544657461696c0000000000000000006020830152604082019050919050565b6000601d82527f466f7262696464656e206e6f6e46756e6769626c655472616e736665720000006020830152604082019050919050565b6000601182527f466f7262696464656e20616464426f6f6b0000000000000000000000000000006020830152604082019050919050565b6000601b82527f66726f6d2f746f2061646472657373206e6f74207665726966792100000000006020830152604082019050919050565b6000601982527f7265717569726520656666656374697665446174653e6e6f77000000000000006020830152604082019050919050565b6000600e82527f73657420466f7262696464656e210000000000000000000000000000000000006020830152604082019050919050565b6000601682527f66726f6d206163636f756e74206e6f74206578697374000000000000000000006020830152604082019050919050565b6000600a82527f676574486f6c64657273000000000000000000000000000000000000000000006020830152604082019050919050565b6000601a82527f466f7262696464656e2069737375654e6f6e46756e6769626c650000000000006020830152604082019050919050565b6000601082527f6261746368206e6f7420766572696679000000000000000000000000000000006020830152604082019050919050565b6000600782527f616464426f6f6b000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000601382527f466f7262696464656e207175657279426f6f6b000000000000000000000000006020830152604082019050919050565b6000601582527f6e6f7465206973206e6f742065666665637469766500000000000000000000006020830152604082019050919050565b6000602b82527f466f7262696464656e207472616e7366657220626563617573652066726f6d2060208301527f69736e2774206f776e65720000000000000000000000000000000000000000006040830152606082019050919050565b6000600f82527f7570646174654e6f74654261746368000000000000000000000000000000000060208301","52604082019050919050565b6000601982527f6e65774e6f74654e6f20686173206265656e20697373756521000000000000006020830152604082019050919050565b6000600c82527f7570646174654e6f74654e6f00000000000000000000000000000000000000006020830152604082019050919050565b6000601c82527f726571756972652065787069726174696f6e44617465203e206e6f77000000006020830152604082019050919050565b6000601b82527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006020830152604082019050919050565b6000603482527f62617463682063616e206e6f74206265206566666563746976652c626563617560208301527f736520656666656374697665446174653e6e6f770000000000000000000000006040830152606082019050919050565b6000602382527f417574683a6f6e6c79206163636f756e7420737461747573206973206e6f726d60208301527f616c2e00000000000000000000000000000000000000000000000000000000006040830152606082019050919050565b6000601482527f466f7262696464656e20666f727a656e4e6f74650000000000000000000000006020830152604082019050919050565b6000600a82527f667265657a654e6f7465000000000000000000000000000000000000000000006020830152604082019050919050565b6000601682527f6e6f746520697320666f727a656e206f722074656172000000000000000000006020830152604082019050919050565b6000601182527f72656d6f766520466f7262696464656e210000000000000000000000000000006020830152604082019050919050565b6000601382527f72657175697265207374617274203c20656e64000000000000000000000000006020830152604082019050919050565b6000601682527f466f7262696464656e207570646174654e6f74654e6f000000000000000000006020830152604082019050919050565b6000602182527f6f70657261746f72206f72206163636f756e74206973206e6f74206e6f726d6160208301527f6c000000000000000000000000000000000000000000000000000000000000006040830152606082019050919050565b6000601482527f626174636820646f65736e2774206578697374210000000000000000000000006020830152604082019050919050565b6000601e82527f536166654d6174683a207375627472616374696f6e206f766572666c6f7700006020830152604082019050919050565b6000601382527f6163636f756e74436f6e7461696e734e6f7465000000000000000000000000006020830152604082019050919050565b6000604182527f6c696d6974206e6f74207665726966792c6c696d69742073697a652073686f7560208301527f6c6420657175616c73203220616e64206c696d69745b305d3c6c696d69745b3160408301527f5d000000000000000000000000000000000000000000000000000000000000006060830152608082019050919050565b6000600c82527f756e667265657a654e6f746500000000000000000000000000000000000000006020830152604082019050919050565b6000601d82527f746865206163636f756e7420686173206e6f74206265656e206f70656e0000006020830152604082019050919050565b6000601d82527f7365744e6f6e46756e6769626c65507269636520466f7262696464656e0000006020830152604082019050919050565b6000600e82527f67657420466f7262696464656e210000000000000000000000000000000000006020830152604082019050919050565b6000601482527f466f7262696464656e20676574486f6c646572730000000000000000000000006020830152604082019050919050565b6000601282527f726571756972652064617465203e206e6f7700000000000000000000000000006020830152604082019050919050565b6000601182527f706172616d73206e6f74207665726966790000000000000000000000000000006020830152604082019050919050565b6000601c82527f726571756972652065666665637469766544617465203e3d206e6f77000000006020830152604082019050919050565b6000603f82527f6e6f74657320686173206265656e20646566696e656420706c6561736520636860208301527f616e6765206e6f74654e6f507265666978206f72206e6f74654e6f53697a65006040830152606082019050919050565b6000601182527f696e7365727420466f7262696464656e210000000000000000000000000000006020830152604082019050919050565b6000601482527f7570646174654e6f746550726f706572746965730000000000000000000000006020830152604082019050919050565b6000601382527f7365744e6f6e46756e6769626c655072696365000000000000000000000000006020830152604082019050919050565b6000601582527f466f7262696464656e20656e61626c65426174636800000000000000000000006020830152604082019050919050565b6000601d82527f466f7262696464656e206163636f756e74436f6e7461696e734e6f74650000006020830152604082019050919050565b6000601482527f746f206163636f756e74206e6f742065786973740000000000000000000000006020830152604082019050919050565b6000601b82527f466f7262696464656e206765744e6f746550726f7065727469657300000000006020830152604082019050919050565b6000601982527f746865206163636f756e7420686173206265656e206f70656e000000000000006020830152604082019050919050565b6000602782527f726571756972652065787069726174696f6e44617465203e202065666665637460208301527f69766544617465000000000000000000000000000000000000000000000000006040830152606082019050919050565b6000601682527f466f7262696464656e20676574546561724e6f746573000000000000000000006020830152604082019050919050565b6000602982527f72657175697265207374617274206c657373207468616e206163636f756e742060208301527f6e6f74652073697a6500000000000000000000000000000000000000000000006040830152606082019050919050565b6000600982527f7175657279426f6f6b00000000000000000000000000000000000000000000006020830152604082019050919050565b6000602a82527f6465736320627974657320617265206265747765656e203120616e642032353560208301527f20696e206c656e677468000000000000000000000000000000000000000000006040830152606082019050919050565b6000600b82527f6f70656e4163636f756e740000000000000000000000000000000000000000006020830152604082019050919050565b6000601582527f466f7262696464656e206f70656e4163636f756e7400000000000000000000006020830152604082019050919050565b6000601082527f777269746520626f6f6b206661696c21000000000000000000000000000000006020830152604082019050919050565b6000601282527f6e6f746520646f65736e277420657869737400000000000000000000000000006020830152604082019050919050565b6000600882527f7472616e736665720000000000000000000000000000000000000000000000006020830152604082019050919050565b6000601282527f6e6f7465206973206e6f7420666f727a656e00000000000000000000000000006020830152604082019050919050565b6000601082527f69737375654e6f6e46756e6769626c65000000000000000000000000000000006020830152604082019050919050565b6000600882527f746561724e6f74650000000000000000000000000000000000000000000000006020830152604082019050919050565b6000601982527f466f7262696464656e207570646174654e6f74654261746368000000000000006020830152604082019050919050565b6000602382527f546865206163636f756e74206973206e6f74206f776e65642074686973206e6f60208301527f74652100000000000000000000000000000000000000000000000000000000006040830152606082019050919050565b6000603282527f72657175697265203130203e206e6f74654e6f53697a65203e3020616e64206560208301527f787069726174696f6e44617465203e6e6f7700000000000000000000000000006040830152606082019050919050565b6000601e82527f466f7262696464656e207570646174654e6f746550726f7065727469657300006020830152604082019050919050565b6000601282527f466f7262696464656e20746561724e6f746500000000000000000000000000006020830152604082019050919050565b6000600d82527f6765744e6f746544657461696c000000000000000000000000000000000000006020830152604082019050919050565b6000603782527f466f7262696464656e206e6f6e46756e6769626c655175657279426f6f6b206260208301527f65636175736520796f75206172656e2774206f776e65720000000000000000006040830152606082019050919050565b6000601682527f466f7262696464656e20756e667265657a654e6f7465000000000000000000006020830152604082019050919050565b6000601982527f466f7262696464656e206765744163636f756e744e6f746573000000000000006020830152604082019050919050565b6000602582527f7265717569726520656666656374697665446174653c2065787069726174696f60208301527f6e446174650000000000000000000000000000000000000000000000000000006040830152606082019050919050565b6000600c82527f676574546561724e6f74657300000000000000000000000000000000000000006020830152604082019050919050565b6000600e82527f61646420466f7262696464656e210000000000000000000000000000000000006020830152604082019050919050565b6000601182527f6765744e6f746550726f706572746965730000000000000000000000000000006020830152604082019050919050565b6000600b82527f656e61626c6542617463680000000000000000000000000000000000000000006020830152604082019050919050565b6000601682527f72657175697265206e6f74654e6f5072656669783e30000000000000000000006020830152604082019050919050565b6000601582527f72657175697265203530303e3d616d6f756e743e3000000000000000000000006020830152604082019050919050565b6000600f82527f6765744163636f756e744e6f74657300000000000000000000000000000000006020830152604082019050919050565b620125668162013dff565b82525050565b620125778162013e09565b82525050565b600060208201905062012594600083018462010d5a565b92915050565b60006080820190","50620125b1600083018762010d5a565b620125c0602083018662010d5a565b620125cf604083018562010d5a565b8181036060830152620125e3818462011066565b905095945050505050565b600060a08201905062012605600083018862010d5a565b62012614602083018762010d5a565b8181036040830152620126288186620110a2565b905081810360608301526201263e818562011066565b90508181036080830152620126548184620110de565b90509695505050505050565b60006101008201905062012678600083018762010d5a565b62012687602083018662010d5a565b81810360408301526201269a8162012040565b90508181036060830152620126b0818562011066565b9050620126c1608083018462010dd0565b95945050505050565b600061010082019050620126e2600083018762010d5a565b620126f1602083018662010d5a565b818103604083015262012704816201227b565b905081810360608301526201271a818562011066565b90506201272b608083018462010dd0565b95945050505050565b6000610100820190506201274c600083018762010d5a565b6201275b602083018662010d5a565b81810360408301526201276e8162012524565b9050818103606083015262012784818562011066565b905062012795608083018462010dd0565b95945050505050565b6000604082019050620127b5600083018562010d5a565b8181036020830152620127c9818462010fdf565b90509392505050565b600061010082019050620127ea600083018862010d5a565b620127f960208301876201116c565b81810360408301526201280d818662011066565b9050818103606083015262012823818562011066565b905062012834608083018462010dd0565b9695505050505050565b60006101008201905062012856600083018762010d5a565b6201286560208301866201117d565b81810360408301526201287881620113cf565b905081810360608301526201288e818562011066565b90506201289f608083018462010dd0565b95945050505050565b600061010082019050620128c0600083018762010d5a565b620128cf60208301866201117d565b8181036040830152620128e28162011474565b90508181036060830152620128f8818562011066565b905062012909608083018462010dd0565b95945050505050565b6000610100820190506201292a600083018762010d5a565b6201293960208301866201117d565b81810360408301526201294c8162011576565b9050818103606083015262012962818562011066565b905062012973608083018462010dd0565b95945050505050565b60006101008201905062012994600083018762010d5a565b620129a360208301866201117d565b8181036040830152620129b681620115e4565b90508181036060830152620129cc818562011066565b9050620129dd608083018462010dd0565b95945050505050565b600061010082019050620129fe600083018762010d5a565b62012a0d60208301866201117d565b818103604083015262012a20816201177a565b9050818103606083015262012a36818562011066565b905062012a47608083018462010dd0565b95945050505050565b60006101008201905062012a68600083018762010d5a565b62012a7760208301866201117d565b818103604083015262012a8a8162011958565b9050818103606083015262012aa0818562011066565b905062012ab1608083018462010dd0565b95945050505050565b60006101008201905062012ad2600083018762010d5a565b62012ae160208301866201117d565b818103604083015262012af48162011a12565b9050818103606083015262012b0a818562011066565b905062012b1b608083018462010dd0565b95945050505050565b60006101008201905062012b3c600083018762010d5a565b62012b4b60208301866201117d565b818103604083015262012b5e8162011c5e565b9050818103606083015262012b74818562011066565b905062012b85608083018462010dd0565b95945050505050565b60006101008201905062012ba6600083018762010d5a565b62012bb560208301866201117d565b818103604083015262012bc88162011c95565b9050818103606083015262012bde818562011066565b905062012bef608083018462010dd0565b95945050505050565b60006101008201905062012c10600083018762010d5a565b62012c1f60208301866201117d565b818103604083015262012c328162011ed0565b9050818103606083015262012c48818562011066565b905062012c59608083018462010dd0565b95945050505050565b60006101008201905062012c7a600083018762010d5a565b62012c8960208301866201117d565b818103604083015262012c9c8162011f64565b9050818103606083015262012cb2818562011066565b905062012cc3608083018462010dd0565b95945050505050565b60006101008201905062012ce4600083018762010d5a565b62012cf360208301866201117d565b818103604083015262012d0681620120ae565b9050818103606083015262012d1c818562011066565b905062012d2d608083018462010dd0565b95945050505050565b60006101008201905062012d4e600083018762010d5a565b62012d5d60208301866201117d565b818103604083015262012d7081620120e5565b9050818103606083015262012d86818562011066565b905062012d97608083018462010dd0565b95945050505050565b60006101008201905062012db8600083018762010d5a565b62012dc760208301866201117d565b818103604083015262012dda81620123da565b9050818103606083015262012df0818562011066565b905062012e01608083018462010dd0565b95945050505050565b60006101008201905062012e22600083018762010d5a565b62012e3160208301866201117d565b818103604083015262012e448162012448565b9050818103606083015262012e5a818562011066565b905062012e6b608083018462010dd0565b95945050505050565b60006101008201905062012e8c600083018762010d5a565b62012e9b60208301866201117d565b818103604083015262012eae816201247f565b9050818103606083015262012ec4818562011066565b905062012ed5608083018462010dd0565b95945050505050565b6000602082019050818103600083015262012efa818462010d6b565b905092915050565b6000608082019050818103600083015262012f1e818762010d6b565b9050818103602083015262012f34818662010f7a565b9050818103604083015262012f4a818562010f7a565b905062012f5b60608301846201256c565b95945050505050565b6000606082019050818103600083015262012f80818662010d6b565b905062012f9160208301856201255b565b818103604083015262012fa5818462010f02565b9050949350505050565b6000604082019050818103600083015262012fcb818562010e25565b9050818103602083015262012fe1818462010e25565b90509392505050565b6000602082019050818103600083015262013006818462010f02565b905092915050565b600060208201905081810360008301526201302a818462010f7a565b905092915050565b600060608201905081810360008301526201304e818662010f7a565b9050818103602083015262013064818562010d6b565b905081810360408301526201307a818462010e9d565b9050949350505050565b60006020820190506201309b600083018462011044565b92915050565b6000604082019050620130b8600083018562011044565b8181036020830152620130cc818462010f7a565b90509392505050565b60006020820190508181036000830152620130f18184620110a2565b905092915050565b6000602082019050818103600083015262013115818462011066565b905092915050565b60006060820190506201313460008301866201117d565b62013143602083018562010d5a565b62013152604083018462011044565b949350505050565b600060208201905081810360008301526201317681846201119f565b905092915050565b60006020820190508181036000830152620131998162011217565b9050919050565b60006020820190508181036000830152620131bb816201124e565b9050919050565b60006020820190508181036000830152620131dd8162011285565b9050919050565b60006020820190508181036000830152620131ff81620112bc565b9050919050565b600060208201905081810360008301526201322181620112f3565b9050919050565b6000602082019050818103600083015262013243816201132a565b9050919050565b60006020820190508181036000830152620132658162011361565b9050919050565b60006020820190508181036000830152620132878162011398565b9050919050565b60006020820190508181036000830152620132a98162011406565b9050919050565b60006020820190508181036000830152620132cb816201143d565b9050919050565b60006020820190508181036000830152620132ed81620114ab565b9050919050565b600060208201905081810360008301526201330f81620114e2565b9050919050565b60006020820190508181036000830152620133318162011519565b9050919050565b600060208201905081810360008301526201335381620115ad565b9050919050565b6000602082019050818103600083015262013375816201161b565b9050919050565b60006020820190508181036000830152620133978162011652565b9050919050565b60006020820190508181036000830152620133b98162011689565b9050919050565b60006020820190508181036000830152620133db81620116e6565b9050919050565b60006020820190508181036000830152620133fd8162011743565b9050919050565b600060208201905081810360008301526201341f81620117b1565b9050919050565b600060208201905081810360008301526201344181620117e8565b9050919050565b6000602082019050818103600083015262013463816201181f565b9050919050565b60006020820190508181036000830152620134858162011856565b9050919050565b60006020820190508181036000830152620134a7816201188d565b9050919050565b60006020820190508181036000830152620134c981620118ea565b9050919050565b60006020820190508181036000830152620134eb8162011921565b9050919050565b600060208201905081810360008301526201350d816201198f565b9050919050565b600060208201905081810360008301526201352f8162011a49565b9050919050565b60006020820190508181036000830152620135518162011a80565b9050919050565b60006020820190508181036000830152620135738162011ab7565b9050919050565b60006020820190508181036000830152620135958162011aee565b9050919050565b6000602082","0190508181036000830152620135b78162011b25565b9050919050565b60006020820190508181036000830152620135d98162011b5c565b9050919050565b60006020820190508181036000830152620135fb8162011b93565b9050919050565b600060208201905081810360008301526201361d8162011bca565b9050919050565b600060208201905081810360008301526201363f8162011c27565b9050919050565b60006020820190508181036000830152620136618162011ccc565b9050919050565b60006020820190508181036000830152620136838162011d03565b9050919050565b60006020820190508181036000830152620136a58162011d3a565b9050919050565b60006020820190508181036000830152620136c78162011d71565b9050919050565b60006020820190508181036000830152620136e98162011da8565b9050919050565b600060208201905081810360008301526201370b8162011ddf565b9050919050565b600060208201905081810360008301526201372d8162011e3c565b9050919050565b600060208201905081810360008301526201374f8162011e73565b9050919050565b60006020820190508181036000830152620137718162011f07565b9050919050565b60006020820190508181036000830152620137938162011f9b565b9050919050565b60006020820190508181036000830152620137b58162011fd2565b9050919050565b60006020820190508181036000830152620137d78162012009565b9050919050565b60006020820190508181036000830152620137f98162012077565b9050919050565b600060208201905081810360008301526201381b816201211c565b9050919050565b600060208201905081810360008301526201383d8162012153565b9050919050565b600060208201905081810360008301526201385f81620121b0565b9050919050565b6000602082019050818103600083015262013881816201220d565b9050919050565b60006020820190508181036000830152620138a38162012244565b9050919050565b60006020820190508181036000830152620138c581620122b2565b9050919050565b60006020820190508181036000830152620138e7816201230f565b9050919050565b60006020820190508181036000830152620139098162012346565b9050919050565b600060208201905081810360008301526201392b816201237d565b9050919050565b600060208201905081810360008301526201394d8162012411565b9050919050565b600060208201905081810360008301526201396f81620124b6565b9050919050565b600060208201905081810360008301526201399181620124ed565b9050919050565b6000602082019050620139af60008301846201255b565b92915050565b6000606082019050620139cc60008301866201255b565b8181036020830152620139e0818562010f7a565b90508181036040830152620139f6818462010f7a565b9050949350505050565b600060408201905062013a1760008301856201255b565b62013a2660208301846201255b565b9392505050565b600060608201905062013a4460008301866201255b565b62013a5360208301856201255b565b62013a6260408301846201256c565b949350505050565b600060208201905062013a8160008301846201256c565b92915050565b6000604051905081810181811067ffffffffffffffff8211171562013aab57600080fd5b8060405250919050565b600067ffffffffffffffff82111562013acd57600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111562013af657600080fd5b602082029050919050565b600067ffffffffffffffff82111562013b1957600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111562013b4257600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111562013b6b57600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111562013b9457600080fd5b602082029050919050565b600067ffffffffffffffff82111562013bb757600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111562013be057600080fd5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff82111562013c0d57600080fd5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff82111562013c3a57600080fd5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff82111562013c6757600080fd5b601f19601f8301169050602081019050919050565b6000602082019050919050565b6000819050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b60008160005260206000209050919050565b60008160005260206000209050919050565b600081519050919050565b600060049050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081549050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000600182019050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60008115159050919050565b6000819050919050565b6000819050919050565b6000819050919050565b600060ff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60008115159050919050565b6000819050919050565b6000819050919050565b6000819050919050565b600062013e6d8262013dbf565b9050919050565b600062013e818262013dbf565b9050919050565b82818337600083830152505050565b60005b8381101562013eb757808201518184015260208101905062013e9a565b8381111562013ec7576000848401525b50505050565b6000601f19601f83011690509190505600a265627a7a723058204ebeb7f3d1a3679b7a8e2fb628b5dd5efa9b07f44f6b15c5bde37473a5a012076c6578706572696d656e74616cf50037608060405234801561001057600080fd5b50600160008190555060e9806100276000396000f3006080604052600436106049576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806335a5cfcb14604e5780636d4ce63c146076575b600080fd5b348015605957600080fd5b506060609e565b6040518082815260200191505060405180910390f35b348015608157600080fd5b50608860a7565b6040518082815260200191505060405180910390f35b60008054905090565b60006001600054016000819055506000549050905600a165627a7a72305820d3c965ab3593a2ba3b7c26c74d9e0fb297bc88b9762c86ea21268d99e5c3eed3002960806040523480156200001157600080fd5b50604051620057e2380380620057e2833981018060405262000037919081019062000395565b826000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260019080600181540180825580915050906001820390600052602060002001600090919290919091505550611001600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600c9080519060200190620000ff9291906200025c565b50600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166356004b6a600c6040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200017a919062000552565b602060405180830381600087803b1580156200019557600080fd5b505af1158015620001aa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620001d0919081019062000404565b5080600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050506200066d565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200029f57805160ff1916838001178555620002d0565b82800160010185558215620002d0579182015b82811115620002cf578251825591602001919060010190620002b2565b5b509050620002df9190620002e3565b5090565b6200030891905b8082111562000304576000816000905550600101620002ea565b5090565b90565b60006200031982516200060d565b905092915050565b60006200032f82516200062d565b905092915050565b600082601f83011215156200034b57600080fd5b8151620003626200035c82620005ce565b620005a0565b915080825260208301602083018583830111156200037f57600080fd5b6200038c83828462000637565b50505092915050565b600080600060608486031215620003ab57600080fd5b6000620003bb868287016200030b565b935050602084015167ffffffffffffffff811115620003d957600080fd5b620003e78682870162000337565b9250506040620003fa868287016200030b565b9150509250925092565b6000602082840312156200041757600080fd5b6000620004278482850162000321565b91505092915050565b6000815460018116600081146200045057600181146200047157620004b6565b607f600283041680865260ff198316602087015260408601935050620004b6565b600282048086526020860195506200048985620005fb565b60005b82811015620004ad578154818901526001820191506020810190506200048c565b80880195505050505b505092915050565b6000600782527f626f6f6b5f6e6f000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000602e82527f7465726d5f6e6f2c7365712c66726f6d2c746f2c6e6f746549642c617373657460208301527f2c6f70657261746f722c646573630000000000000000000000000000000000006040830152606082019050919050565b600060608201905081810360008301526200056e818462000430565b9050818103602083015262","00058381620004be565b905081810360408301526200059881620004f5565b905092915050565b6000604051905081810181811067ffffffffffffffff82111715620005c457600080fd5b8060405250919050565b600067ffffffffffffffff821115620005e657600080fd5b601f19601f8301169050602081019050919050565b60008160005260206000209050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b83811015620006575780820151818401526020810190506200063a565b8381111562000667576000848401525b50505050565b615165806200067d6000396000f30060806040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806338cc483114610072578063521ae5361461009d57806360f95a02146100da5780639b825e8214610118578063e953d0af14610156575b600080fd5b34801561007e57600080fd5b50610087610181565b60405161009491906148e1565b60405180910390f35b3480156100a957600080fd5b506100c460048036036100bf9190810190614102565b610189565b6040516100d1919061497f565b60405180910390f35b3480156100e657600080fd5b5061010160048036036100fc9190810190614017565b610921565b60405161010f9291906149a1565b60405180910390f35b34801561012457600080fd5b5061013f600480360361013a9190810190614096565b6113f3565b60405161014d92919061494f565b60405180910390f35b34801561016257600080fd5b5061016b611bbe565b6040516101789190614dff565b60405180910390f35b600030905090565b60606000606060006060600080606060008b5111806101a9575060008a51115b15156101ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101e190614d8a565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f23f63c9600c6040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016102629190614a6e565b602060405180830381600087803b15801561027c57600080fd5b505af1158015610290573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506102b49190810190614214565b96506102c08b8b6113f3565b80965081975050508673ffffffffffffffffffffffffffffffffffffffff16637857d7c96040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561032c57600080fd5b505af1158015610340573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506103649190810190614199565b92506000915060008b51118015610394575060008b600081518110151561038757fe5b9060200190602002015114155b15610441578273ffffffffffffffffffffffffffffffffffffffff1663cd30a1d16103d68d60008151811015156103c757fe5b90602001906020020151611c1b565b6040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161040e9190614c16565b600060405180830381600087803b15801561042857600080fd5b505af115801561043c573d6000803e3d6000fd5b505050505b60018b5111801561046b575060008b600181518110151561045e57fe5b9060200190602002015114155b15610518578273ffffffffffffffffffffffffffffffffffffffff1663cd30a1d16104ad8d600181518110151561049e57fe5b90602001906020020151611c1b565b6040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016104e59190614c8b565b600060405180830381600087803b1580156104ff57600080fd5b505af1158015610513573d6000803e3d6000fd5b505050505b60028b51118015610542575060008b600281518110151561053557fe5b9060200190602002015114155b156105ef578273ffffffffffffffffffffffffffffffffffffffff1663cd30a1d16105848d600281518110151561057557fe5b90602001906020020151611c1b565b6040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016105bc9190614d55565b600060405180830381600087803b1580156105d657600080fd5b505af11580156105ea573d6000803e3d6000fd5b505050505b60008a511180156106455750600073ffffffffffffffffffffffffffffffffffffffff168a600081518110151561062257fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1614155b15610708578273ffffffffffffffffffffffffffffffffffffffff1663cd30a1d161069d8c600081518110151561067857fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff16611d72565b6040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016106d59190614b73565b600060405180830381600087803b1580156106ef57600080fd5b505af1158015610703573d6000803e3d6000fd5b505050505b60018a5111801561075e5750600073ffffffffffffffffffffffffffffffffffffffff168a600181518110151561073b57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1614155b15610821578273ffffffffffffffffffffffffffffffffffffffff1663cd30a1d16107b68c600181518110151561079157fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff16611d72565b6040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016107ee9190614b1e565b600060405180830381600087803b15801561080857600080fd5b505af115801561081c573d6000803e3d6000fd5b505050505b8273ffffffffffffffffffffffffffffffffffffffff16637ec1cc658a600081518110151561084c57fe5b906020019060200201518b600181518110151561086557fe5b906020019060200201516040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016108a89291906149e5565b600060405180830381600087803b1580156108c257600080fd5b505af11580156108d6573d6000803e3d6000fd5b505050506108e5868685611ee6565b8093508192505050600081511180156108fe5750600082135b156109105761090d81836121ee565b93505b839750505050505050509392505050565b600061092b613c53565b6000606060008060008061093d613c53565b60048c5110151515610984576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097b90614d8a565b60405180910390fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663124b65b46040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b158015610a0957600080fd5b505af1158015610a1d573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250610a4691908101906142d0565b80975081985050506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638662f51f6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015610ad357600080fd5b505af1158015610ae7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b0b91908101906142a7565b9450610b1a87868e8e8e612be1565b9350600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f23f63c9600c6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610b949190614a6e565b602060405180830381600087803b158015610bae57600080fd5b505af1158015610bc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610be69190810190614214565b92508273ffffffffffffffffffffffffffffffffffffffff166331afac36610c2e6002600160028054905003815481101515610c1e57fe5b9060005260206000200154611c1b565b866040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610c68929190614a3e565b602060405180830381600087803b158015610c8257600080fd5b505af1158015610c96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610cba919081019061423d565b91507f16d624dce1a542b12776c04c8bc47047e182a4cd79844e7e7fb40593f9fd7cb68c8c8c85604051610cf194939291906148fc565b60405180910390a16008600088815260200190815260200160002060006002600160028054905003815481101515610d2557fe5b9060005260206000200154815260200190815260200160002060009054906101000a900460ff161515610e0f57600360008881526020019081526020016000206002600160028054905003815481101515610d7c57fe5b9060005260206000200154908060018154018082558091505090600182039060005260206000200160009091929091909150555060016008600089815260200190815260200160002060006002600160028054905003815481101515610dde57fe5b9060005260206000200154815260200190815260200160002060006101000a81548160ff0219169083151502179055505b6002600160028054905003815481101515610e2657fe5b90600052602060002001546004600087815260200190815260200160002081905550600960008d6002815181101515610e5b57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006002600160028054905003815481101515610eb857fe5b9060005260206000200154815260200190815260200160002060009054906101000a900460ff16158015610f3157508b6002815181101515610ef657fe5b906020019060","2002015173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff1614155b1561107b57600560008d6002815181101515610f4957fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002600160028054905003815481101515610fa457fe5b906000526020600020015490806001815401808255809150509060018203906000526020600020016000909192909190915055506001600960008e6002815181101515610fed57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600260016002805490500381548110151561104a57fe5b9060005260206000200154815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600a60008d600381518110151561108e57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060026001600280549050038154811015156110eb57fe5b9060005260206000200154815260200190815260200160002060009054906101000a900460ff1615801561116457508b600381518110151561112957fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff1614155b156112ae57600660008d600381518110151561117c57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060026001600280549050038154811015156111d757fe5b906000526020600020015490806001815401808255809150509060018203906000526020600020016000909192909190915055506001600a60008e600381518110151561122057fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600260016002805490500381548110151561127d57fe5b9060005260206000200154815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600b60008c8152602001908152602001600020600060026001600280549050038154811015156112da57fe5b9060005260206000200154815260200190815260200160002060009054906101000a900460ff1615156113c457600760008c8152602001908152602001600020600260016002805490500381548110151561133157fe5b906000526020600020015490806001815401808255809150509060018203906000526020600020016000909192909190915055506001600b60008d81526020019081526020016000206000600260016002805490500381548110151561139357fe5b9060005260206000200154815260200190815260200160002060006101000a81548160ff0219169083151502179055505b604080519081016040528088815260200186815250905060018214819850985050505050505050935093915050565b6060600060606000806000806000806002805490506040519080825280602002602001820160405280156114365781602001602082028038833980820191505090505b50965060018b51118015611463575060008b600181518110151561145657fe5b9060200190602002015114155b156114f1576000600460008d600181518110151561147d57fe5b906020019060200201518152602001908152602001600020541415156114f0576001876001600460008f60018151811015156114b557fe5b90602001906020020151815260200190815260200160002054038151811015156114db57fe5b90602001906020020190151590811515815250505b5b60008b5111801561151b575060008b600081518110151561150e57fe5b9060200190602002015114155b1561163657600095505b600360008c600081518110151561153857fe5b9060200190602002015181526020019081526020016000208054905086101561163557866001600360008e600081518110151561157157fe5b9060200190602002015181526020019081526020016000208881548110151561159657fe5b9060005260206000200154038151811015156115ae57fe5b906020019060200201511515611628576001876001600360008f60008151811015156115d657fe5b906020019060200201518152602001908152602001600020898154811015156115fb57fe5b90600052602060002001540381518110151561161357fe5b90602001906020020190151590811515815250505b8580600101965050611525565b5b60028b51118015611660575060008b600281518110151561165357fe5b9060200190602002015114155b1561177b57600094505b600760008c600281518110151561167d57fe5b9060200190602002015181526020019081526020016000208054905085101561177a57866001600760008e60028151811015156116b657fe5b906020019060200201518152602001908152602001600020878154811015156116db57fe5b9060005260206000200154038151811015156116f357fe5b90602001906020020151151561176d576001876001600760008f600281518110151561171b57fe5b9060200190602002015181526020019081526020016000208881548110151561174057fe5b90600052602060002001540381518110151561175857fe5b90602001906020020190151590811515815250505b848060010195505061166a565b5b60008a511180156117d15750600073ffffffffffffffffffffffffffffffffffffffff168a60008151811015156117ae57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1614155b1561197057600093505b600560008b60008151811015156117ee57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905084101561196f57866001600560008d600081518110151561185357fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020868154811015156118a457fe5b9060005260206000200154038151811015156118bc57fe5b906020019060200201511515611962576001876001600560008e60008151811015156118e457fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208781548110151561193557fe5b90600052602060002001540381518110151561194d57fe5b90602001906020020190151590811515815250505b83806001019450506117db565b5b60018a511180156119c65750600073ffffffffffffffffffffffffffffffffffffffff168a60018151811015156119a357fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1614155b15611b6557600092505b600660008b60018151811015156119e357fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050831015611b6457866001600660008d6001815181101515611a4857fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002085815481101515611a9957fe5b906000526020600020015403815181101515611ab157fe5b906020019060200201511515611b57576001876001600660008e6001815181101515611ad957fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002086815481101515611b2a57fe5b906000526020600020015403815181101515611b4257fe5b90602001906020020190151590811515815250505b82806001019350506119d0565b5b60009150600090505b8651811015611baa578681815181101515611b8557fe5b9060200190602002015115611b9d5781806001019250505b8080600101915050611b6e565b868298509850505050505050509250929050565b6000600260016002805490500190806001815401808255809150509060018203906000526020600020016000909192909190915055506002600160028054905003815481101515611c0b57fe5b9060005260206000200154905090565b60606000806060600080861415611c69576040805190810160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509450611d69565b8593505b600084141515611c93578280600101935050600a84811515611c8b57fe5b049350611c6d565b826040519080825280601f01601f191660200182016040528015611cc65781602001602082028038833980820191505090505b5091506001830390505b600086141515611d6557600a86811515611ce657fe5b066030017f010000000000000000000000000000000000000000000000000000000000000002828280600190039350815181101515611d2157fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a86811515611d5d57fe5b049550611cd0565b8194505b50505050919050565b60606000806000606060008673ffffffffffffffffffffffffffffffffffffffff1694506000851415611ddc576040805190810160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509550611edc565b8493505b600084141515611e06578280600101935050600a84811515611dfe57fe5b049350611de0565b826040519080825280601f01601f191660200182016040528015611e395781602001602082028038833980820191505090505b5091506001830390505b600085141515611ed857600a85811515611e5957fe5b066030017f010000000000000000000000000000000000000000000000000000000000000002828280600190039350815181101515611e9457fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85811515611ed057fe5b049450611e43565b8195505b5050505050919050565b60606000806000606060008060006001600090549061","01000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f23f63c9600c6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401611f6c9190614a6e565b602060405180830381600087803b158015611f8657600080fd5b505af1158015611f9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611fbe9190810190614214565b95506000945089604051908082528060200260200182016040528015611ff35781602001602082028038833980820191505090505b50935060009250600091505b8a518210156121da578a8281518110151561201657fe5b90602001906020020151156121cd578573ffffffffffffffffffffffffffffffffffffffff1663e8434e3961204d60018501611c1b565b8b6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401612087929190614a0e565b602060405180830381600087803b1580156120a157600080fd5b505af11580156120b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506120d991908101906141c2565b90508073ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561213f57600080fd5b505af1158015612153573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612177919081019061423d565b8501945080848480600101955081518110151561219057fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505b8180600101925050611fff565b838597509750505050505050935093915050565b606080600080600080600060606008890260405190808252806020026020018201604052801561223257816020015b606081526020019060019003908161221d5790505b509650600095505b8951861015612bd157898681518110151561225157fe5b90602001906020020151945060009350600092505b8473ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156122ca57600080fd5b505af11580156122de573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612302919081019061423d565b831215612bc4578473ffffffffffffffffffffffffffffffffffffffff1663846719e0846040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161235e91906149ca565b602060405180830381600087803b15801561237857600080fd5b505af115801561238c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506123b091908101906141eb565b9150600093506125b78273ffffffffffffffffffffffffffffffffffffffff16639c981fcb6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161240c90614b53565b600060405180830381600087803b15801561242657600080fd5b505af115801561243a573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506124639190810190614266565b8373ffffffffffffffffffffffffffffffffffffffff16639c981fcb6040518163ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016124b690614afe565b600060405180830381600087803b1580156124d057600080fd5b505af11580156124e4573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525061250d9190810190614266565b8473ffffffffffffffffffffffffffffffffffffffff1663bf40fac16040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161256090614ba8565b602060405180830381600087803b15801561257a57600080fd5b505af115801561258e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506125b29190810190613fee565b613312565b9050600381511415156125ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f690614ade565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16639c981fcb6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161265290614bf6565b600060405180830381600087803b15801561266c57600080fd5b505af1158015612680573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506126a99190810190614266565b878585600802018151811015156126bc57fe5b906020019060200201819052508173ffffffffffffffffffffffffffffffffffffffff16639c981fcb6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161271c90614c6b565b600060405180830381600087803b15801561273657600080fd5b505af115801561274a573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506127739190810190614266565b8785600101955085856008020181518110151561278c57fe5b906020019060200201819052508060008151811015156127a857fe5b90602001906020020151878560010195508585600802018151811015156127cb57fe5b906020019060200201819052508060018151811015156127e757fe5b906020019060200201518785600101955085856008020181518110151561280a57fe5b90602001906020020181905250612999600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f02b8c8c61290a8573ffffffffffffffffffffffffffffffffffffffff16639c981fcb6040518163ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016128ae90614d35565b600060405180830381600087803b1580156128c857600080fd5b505af11580156128dc573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506129059190810190614266565b6138b1565b6040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016129429190614dff565b602060405180830381600087803b15801561295c57600080fd5b505af1158015612970573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061299491908101906142a7565b611c1b565b878560010195508585600802018151811015156129b257fe5b906020019060200201819052508173ffffffffffffffffffffffffffffffffffffffff16639c981fcb6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401612a1290614cc0565b600060405180830381600087803b158015612a2c57600080fd5b505af1158015612a40573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250612a699190810190614266565b87856001019550858560080201815181101515612a8257fe5b90602001906020020181905250612b528273ffffffffffffffffffffffffffffffffffffffff1663bf40fac16040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401612ae590614a90565b602060405180830381600087803b158015612aff57600080fd5b505af1158015612b13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612b379190810190613fee565b73ffffffffffffffffffffffffffffffffffffffff16611d72565b87856001019550858560080201815181101515612b6b57fe5b90602001906020020181905250806002815181101515612b8757fe5b9060200190602002015187856001019550858560080201815181101515612baa57fe5b906020019060200201819052508280600101935050612266565b858060010196505061223a565b8697505050505050505092915050565b6000806000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f23f63c9600c6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401612c5e9190614a6e565b602060405180830381600087803b158015612c7857600080fd5b505af1158015612c8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612cb09190810190614214565b91508173ffffffffffffffffffffffffffffffffffffffff166313db93466040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015612d1657600080fd5b505af1158015612d2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612d4e91908101906141eb565b90508073ffffffffffffffffffffffffffffffffffffffff1663e942b516612d966002600160028054905003815481101515612d8657fe5b9060005260206000200154611c1b565b6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401612dce9190614daa565b600060405180830381600087803b158015612de857600080fd5b505af1158015612dfc573d6000803e3d6000fd5b505050508073ffffffffffffffffffffffffffffffffffffffff1663e942b516612e2589611c1b565b6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401612e5d9190614c8b565b600060405180830381600087803b158015612e7757600080fd5b505af1158015612e8b573d6000803e3d6000fd5b505050508073ffffffffffffffffffffffffffffffffffffffff1663e942b516612eb48a611c1b565b6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401612eec9190614c16565b600060405180830381600087803b1580","15612f0657600080fd5b505af1158015612f1a573d6000803e3d6000fd5b505050508073ffffffffffffffffffffffffffffffffffffffff1663e942b516612f71886002815181101515612f4c57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff16611d72565b6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401612fa99190614b73565b600060405180830381600087803b158015612fc357600080fd5b505af1158015612fd7573d6000803e3d6000fd5b505050508073ffffffffffffffffffffffffffffffffffffffff1663e942b51661302e88600381518110151561300957fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff16611d72565b6040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016130669190614b1e565b600060405180830381600087803b15801561308057600080fd5b505af1158015613094573d6000803e3d6000fd5b505050508073ffffffffffffffffffffffffffffffffffffffff1663a815ff158760018151811015156130c357fe5b906020019060200201516040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016131059190614ab0565b600060405180830381600087803b15801561311f57600080fd5b505af1158015613133573d6000803e3d6000fd5b505050508073ffffffffffffffffffffffffffffffffffffffff1663e942b51661315c87611c1b565b6040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016131949190614d55565b600060405180830381600087803b1580156131ae57600080fd5b505af11580156131c2573d6000803e3d6000fd5b505050508073ffffffffffffffffffffffffffffffffffffffff1663a815ff158760008151811015156131f157fe5b906020019060200201516040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016132339190614bc8565b600060405180830381600087803b15801561324d57600080fd5b505af1158015613261573d6000803e3d6000fd5b505050508073ffffffffffffffffffffffffffffffffffffffff1663e942b51685600081518110151561329057fe5b906020019060200201516040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016132d29190614ce0565b600060405180830381600087803b1580156132ec57600080fd5b505af1158015613300573d6000803e3d6000fd5b50505050809250505095945050505050565b606080600080600360405190808252806020026020018201604052801561334d57816020015b60608152602001906001900390816133385790505b50925060008751118015613396575061336587613a82565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff1614155b1561352057600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166346438ca06133e289613a82565b6040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161341a91906148e1565b602060405180830381600087803b15801561343457600080fd5b505af1158015613448573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061346c9190810190613fee565b90508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff16141515156134e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134d790614d15565b60405180910390fd5b6134ff8173ffffffffffffffffffffffffffffffffffffffff16611d72565b83600081518110151561350e57fe5b9060200190602002018190525061353e565b8683600081518110151561353057fe5b906020019060200201819052505b60008651118015613584575061355386613a82565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff1614155b1561370e57600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166346438ca06135d088613a82565b6040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161360891906148e1565b602060405180830381600087803b15801561362257600080fd5b505af1158015613636573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061365a9190810190613fee565b90508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff16141515156136ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136c590614ddf565b60405180910390fd5b6136ed8173ffffffffffffffffffffffffffffffffffffffff16611d72565b8360018151811015156136fc57fe5b9060200190602002018190525061372c565b8583600181518110151561371e57fe5b906020019060200201819052505b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166346438ca0866040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016137a391906148e1565b602060405180830381600087803b1580156137bd57600080fd5b505af11580156137d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506137f59190810190613fee565b90508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff1614151515613869576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161386090614c4b565b60405180910390fd5b6138888173ffffffffffffffffffffffffffffffffffffffff16611d72565b83600281518110151561389757fe5b906020019060200201819052508293505050509392505050565b6000606060008084925060009150600090505b8251811015613a7757603083828151811015156138dd57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027f0100000000000000000000000000000000000000000000000000000000000000900460ff16101580156139db57506039838281518110151561396757fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027f0100000000000000000000000000000000000000000000000000000000000000900460ff1611155b15613a6a57603083828151811015156139f057fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027f010000000000000000000000000000000000000000000000000000000000000090040360ff16600a83020191505b80806001019150506138c4565b819350505050919050565b6000606060008084925060009150600090505b8251811015613c485760308382815181101515613aae57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027f0100000000000000000000000000000000000000000000000000000000000000900460ff1610158015613bac575060398382815181101515613b3857fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027f0100000000000000000000000000000000000000000000000000000000000000900460ff1611155b15613c3b5760308382815181101515613bc157fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027f010000000000000000000000000000000000000000000000000000000000000090040360ff16600a83020191505b8080600101915050613a95565b819350505050919050565b6040805190810160405280600290602082028038833980820191505090505090565b6000613c818235615038565b905092915050565b6000613c958251615038565b905092915050565b600082601f8301121515613cb057600080fd5b8135613cc3613cbe82614e47565b614e1a565b91508181835260208401935060208101905083856020840282011115613ce857600080fd5b60005b83811015613d185781613cfe8882613c75565b845260208401935060208301925050600181019050613ceb565b5050505092915050565b600082601f8301121515613d3557600080fd5b8135613d48613d4382614e6f565b614e1a565b91508181835260208401935060208101905083856020840282011115613d6d57600080fd5b60005b83811015613d9d5781613d838882613ef2565b845260208401935060208301925050600181019050613d70565b5050505092915050565b600082601f8301121515613dba57600080fd5b8135613dcd613dc882614e97565b614e1a565b9150818183526020840193506020810190508360005b83811015613e135781358601613df98882613f1a565b845260208401935060208301925050600181019050613de3565b5050505092915050565b600082601f8301121515613e3057600080fd5b8135613e43613e3e82614ebf565b614e1a565b91508181835260208401935060208101905083856020840282011115613e6857600080fd5b60005b83811015613e985781613e7e8882613fc6565b845260208401935060208301925050600181019050613e6b565b5050505092915050565b6000613eae8251615058565b905092915050565b6000613ec2825161506a565b905092915050565b6000613ed6825161507c565b905092915050565b6000613eea825161508e565b905092915050565b6000613efe82356150a0","565b905092915050565b6000613f1282516150a0565b905092915050565b600082601f8301121515613f2d57600080fd5b8135613f40613f3b82614ee7565b614e1a565b91508082526020830160208301858383011115613f5c57600080fd5b613f678382846150d8565b50505092915050565b600082601f8301121515613f8357600080fd5b8151613f96613f9182614f13565b614e1a565b91508082526020830160208301858383011115613fb257600080fd5b613fbd8382846150e7565b50505092915050565b6000613fd282356150aa565b905092915050565b6000613fe682516150aa565b905092915050565b60006020828403121561400057600080fd5b600061400e84828501613c89565b91505092915050565b60008060006060848603121561402c57600080fd5b600084013567ffffffffffffffff81111561404657600080fd5b61405286828701613c9d565b935050602061406386828701613fc6565b925050604084013567ffffffffffffffff81111561408057600080fd5b61408c86828701613da7565b9150509250925092565b600080604083850312156140a957600080fd5b600083013567ffffffffffffffff8111156140c357600080fd5b6140cf85828601613e1d565b925050602083013567ffffffffffffffff8111156140ec57600080fd5b6140f885828601613c9d565b9150509250929050565b60008060006060848603121561411757600080fd5b600084013567ffffffffffffffff81111561413157600080fd5b61413d86828701613e1d565b935050602084013567ffffffffffffffff81111561415a57600080fd5b61416686828701613c9d565b925050604084013567ffffffffffffffff81111561418357600080fd5b61418f86828701613d22565b9150509250925092565b6000602082840312156141ab57600080fd5b60006141b984828501613ea2565b91505092915050565b6000602082840312156141d457600080fd5b60006141e284828501613eb6565b91505092915050565b6000602082840312156141fd57600080fd5b600061420b84828501613eca565b91505092915050565b60006020828403121561422657600080fd5b600061423484828501613ede565b91505092915050565b60006020828403121561424f57600080fd5b600061425d84828501613f06565b91505092915050565b60006020828403121561427857600080fd5b600082015167ffffffffffffffff81111561429257600080fd5b61429e84828501613f70565b91505092915050565b6000602082840312156142b957600080fd5b60006142c784828501613fda565b91505092915050565b600080604083850312156142e357600080fd5b60006142f185828601613fda565b925050602083015167ffffffffffffffff81111561430e57600080fd5b61431a85828601613f70565b9150509250929050565b61432d81614ff8565b82525050565b600061433e82614f82565b80845260208401935061435083614f3f565b60005b8281101561438257614366868351614324565b61436f82614fc4565b9150602086019550600181019050614353565b50849250505092915050565b600061439982614f8d565b8084526020840193506143ab83614f4c565b60005b828110156143dd576143c18683516144a2565b6143ca82614fd1565b91506020860195506001810190506143ae565b50849250505092915050565b60006143f482614f98565b8084526020840193508360208202850161440d85614f59565b60005b84811015614446578383038852614428838351614514565b925061443382614fde565b9150602088019750600181019050614410565b508196508694505050505092915050565b61446081614fa3565b61446982614f66565b60005b8281101561449b5761447f8583516148d2565b61448882614feb565b915060208501945060018101905061446c565b5050505050565b6144ab81615018565b82525050565b6144ba816150b4565b82525050565b6144c9816150c6565b82525050565b6144d881615024565b82525050565b60006144e982614fb9565b8084526144fd8160208601602086016150e7565b6145068161511a565b602085010191505092915050565b600061451f82614fae565b8084526145338160208601602086016150e7565b61453c8161511a565b602085010191505092915050565b6000815460018116600081146145675760018114614587576145c8565b607f600283041680865260ff1983166020870152604086019350506145c8565b6002820480865260208601955061459d85614f70565b60005b828110156145bf578154818901526001820191506020810190506145a0565b80880195505050505b505092915050565b6000600582527f61737365740000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000601282527f6163636f756e74206e6f742076657269667900000000000000000000000000006020830152604082019050919050565b6000600282527f746f0000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000600482527f66726f6d000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000600882527f6f70657261746f720000000000000000000000000000000000000000000000006020830152604082019050919050565b6000600782527f7465726d5f6e6f000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000601a82527f6f70657261746f72206163636f756e74206e6f7420666f756e640000000000006020830152604082019050919050565b6000600382527f73657100000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000600482527f64657363000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000601682527f66726f6d206163636f756e74206e6f7420666f756e64000000000000000000006020830152604082019050919050565b6000600682527f6e6f7465496400000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000601882527f506172616d73206973206e6f7420636f6d706c69616e636500000000000000006020830152604082019050919050565b6000600782527f626f6f6b5f6e6f000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000601482527f746f206163636f756e74206e6f7420666f756e640000000000000000000000006020830152604082019050919050565b6148db8161502e565b82525050565b60006020820190506148f66000830184614324565b92915050565b600060808201905081810360008301526149168187614333565b905061492560208301866148d2565b818103604083015261493781856143e9565b905061494660608301846144cf565b95945050505050565b60006040820190508181036000830152614969818561438e565b905061497860208301846148d2565b9392505050565b6000602082019050818103600083015261499981846143e9565b905092915050565b60006060820190506149b660008301856144a2565b6149c36020830184614457565b9392505050565b60006020820190506149df60008301846144cf565b92915050565b60006040820190506149fa60008301856144cf565b614a0760208301846144cf565b9392505050565b60006040820190508181036000830152614a2881856144de565b9050614a3760208301846144b1565b9392505050565b60006040820190508181036000830152614a5881856144de565b9050614a6760208301846144c0565b9392505050565b60006020820190508181036000830152614a88818461454a565b905092915050565b60006020820190508181036000830152614aa9816145d0565b9050919050565b60006040820190508181036000830152614ac9816145d0565b9050614ad86020830184614324565b92915050565b60006020820190508181036000830152614af781614607565b9050919050565b60006020820190508181036000830152614b178161463e565b9050919050565b60006040820190508181036000830152614b378161463e565b90508181036020830152614b4b81846144de565b905092915050565b60006020820190508181036000830152614b6c81614675565b9050919050565b60006040820190508181036000830152614b8c81614675565b90508181036020830152614ba081846144de565b905092915050565b60006020820190508181036000830152614bc1816146ac565b9050919050565b60006040820190508181036000830152614be1816146ac565b9050614bf06020830184614324565b92915050565b60006020820190508181036000830152614c0f816146e3565b9050919050565b60006040820190508181036000830152614c2f816146e3565b90508181036020830152614c4381846144de565b905092915050565b60006020820190508181036000830152614c648161471a565b9050919050565b60006020820190508181036000830152614c8481614751565b9050919050565b60006040820190508181036000830152614ca481614751565b90508181036020830152614cb881846144de565b905092915050565b60006020820190508181036000830152614cd981614788565b9050919050565b60006040820190508181036000830152614cf981614788565b90508181036020830152614d0d8184614514565b905092915050565b60006020820190508181036000830152614d2e816147bf565b9050919050565b60006020820190508181036000830152614d4e816147f6565b9050919050565b60006040820190508181036000830152614d6e816147f6565b90508181036020830152614d8281846144de565b905092915050565b60006020820190508181036000830152614da38161482d565b9050919050565b60006040820190508181036000830152614dc381614864565b90508181036020830152614dd781846144de565b905092915050565b60006020820190508181036000830152614df88161489b565b9050919050565b6000602082019050614e1460008301846148d2565b92915050565b6000604051905081810181811067ffffffffffffffff82111715614e3d57600080fd5b8060405250919050565b600067ffffffffffffffff821115614e5e57600080fd5b602082029050602081019050919050565b600067ffffffffffffffff821115614e8657600080fd5b602082029050602081019050919050565b600067ffffffffffffffff821115614eae57600080fd5b602082029050602081019050919050565b600067ffffffffffffffff821115614ed657600080fd5b602082029050602081019050919050565b600067ffffffffffffffff821115614efe57600080","fd5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff821115614f2a57600080fd5b601f19601f8301169050602081019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000819050919050565b60008160005260206000209050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600060029050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60008115159050919050565b6000819050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061506382614ff8565b9050919050565b600061507582614ff8565b9050919050565b600061508782614ff8565b9050919050565b600061509982614ff8565b9050919050565b6000819050919050565b6000819050919050565b60006150bf82614ff8565b9050919050565b60006150d182614ff8565b9050919050565b82818337600083830152505050565b60005b838110156151055780820151818401526020810190506150ea565b83811115615114576000848401525b50505050565b6000601f19601f83011690509190505600a265627a7a72305820dc885301174bdc18e5daf9d6f1118469a65c74e9259c95725aa4351fa4ee95a46c6578706572696d656e74616cf50037"};

    public static final String BINARY = String.join("", BINARY_ARRAY);

    public static final String[] SM_BINARY_ARRAY = {"60806040526040805190810160405280600681526020017f7075626c696300000000000000000000000000000000000000000000000000008152506000908051906020019063000000539291906300001318565b506040805190810160405280600581526020017f6f776e65720000000000000000000000000000000000000000000000000000008152506001908051906020019063000000a39291906300001318565b506040805190810160405280600581526020017f61646d696e0000000000000000000000000000000000000000000000000000008152506002908051906020019063000000f39291906300001318565b506040805190810160405280600281526020017f5f720000000000000000000000000000000000000000000000000000000000008152506003908051906020019063000001439291906300001318565b506040805190810160405280600281526020017f5f770000000000000000000000000000000000000000000000000000000000008152506004908051906020019063000001939291906300001318565b506040805190810160405280600381526020017f616c6c00000000000000000000000000000000000000000000000000000000008152506005908051906020019063000001e39291906300001318565b506040805190810160405280600281526020017f69640000000000000000000000000000000000000000000000000000000000008152506006908051906020019063000002339291906300001318565b506040805190810160405280600481526020017f61646472000000000000000000000000000000000000000000000000000000008152506007908051906020019063000002839291906300001318565b506040805190810160405280600481526020017f74797065000000000000000000000000000000000000000000000000000000008152506008908051906020019063000002d39291906300001318565b506040805190810160405280600481526020017f726f6c65000000000000000000000000000000000000000000000000000000008152506009908051906020019063000003239291906300001318565b506040805190810160405280600781526020017f7075625f6b657900000000000000000000000000000000000000000000000000815250600a908051906020019063000003739291906300001318565b506040805190810160405280600481526020017f6461746100000000000000000000000000000000000000000000000000000000815250600b908051906020019063000003c39291906300001318565b506040805190810160405280600681526020017f726f6c655f720000000000000000000000000000000000000000000000000000815250600c908051906020019063000004139291906300001318565b506040805190810160405280600681526020017f726f6c655f770000000000000000000000000000000000000000000000000000815250600d908051906020019063000004639291906300001318565b506040805190810160405280600c81526020017f6f70656e696e675f62616e6b0000000000000000000000000000000000000000815250600e908051906020019063000004b39291906300001318565b506040805190810160405280600681526020017f6173736574730000000000000000000000000000000000000000000000000000815250600f908051906020019063000005039291906300001318565b506040805190810160405280600781526020017f62616c616e6365000000000000000000000000000000000000000000000000008152506010908051906020019063000005539291906300001318565b506040805190810160405280600681526020017f7265636f726400000000000000000000000000000000000000000000000000008152506011908051906020019063000005a39291906300001318565b506040805190810160405280600581526020017f61646d696e0000000000000000000000000000000000000000000000000000008152506012908051906020019063000005f39291906300001318565b506040805190810160405280600881526020017f6f70657261746f720000000000000000000000000000000000000000000000008152506013908051906020019063000006439291906300001318565b506040805190810160405280600581526020017f6f776e65720000000000000000000000000000000000000000000000000000008152506014908051906020019063000006939291906300001318565b506040805190810160405280600481526020017f75736572000000000000000000000000000000000000000000000000000000008152506015908051906020019063000006e39291906300001318565b5062010001601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062010002601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062010003601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062010004601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015630000080257600080fd5b50604051630001b266380380630001b2668339810180604052630000082c91908101906300001605565b8181606063000008683073ffffffffffffffffffffffffffffffffffffffff166300000ea464010000000002630000f54f176401000000009004565b9050630000093560068054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015630000090d5780601f1063000008e057610100808354040283529160200191630000090d565b820191906000526020600020905b81548152906001019060200180831163000008ee57829003601f168201915b505050505082601b6300000f8d64010000000002630000d9e317909291906401000000009004565b5082601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e92139da6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801563000009ff57600080fd5b505af11580156300000a15573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506300000a3d919081019063000015d6565b601f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631500025a6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156300000b0557600080fd5b505af11580156300000b1b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506300000b43919081019063000015d6565b602060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156300000c035781601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506300000c45565b30601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b505050600083511180156300000c5c575060408351105b15156300000ca3576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016300000c9a90630000190e565b60405180910390fd5b6300000caf63000013a6565b604051809103906000f0801580156300000ccd573d6000803e3d6000fd5b50602b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506300000d1a63000013a6565b604051809103906000f0801580156300000d38573d6000803e3d6000fd5b50602c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663491bae946040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156300000ddf57600080fd5b505af11580156300000df5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506300000e1d919081019063000015d6565b83826300000e2b63000013b8565b6300000e3b9392919063000018c4565b604051809103906000f0801580156300000e59573d6000803e3d6000fd5b50603560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050506300001a4c565b6060600080836c0100000000000000000000000002915060146040519080825280601f01601f1916602001820160405280156300000ef15781602001602082028038833980820191505090505b509250600090505b60148110156300000f865781816014811015156300000f1457fe5b1a7f01000000000000000000000000000000000000000000000000000000000000000283828151811015156300000f4757fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080806001019150506300000ef9565b5050919050565b60008084600001846040518082805190602001908083835b6020831015156300000fce57805182526020820191506020810190506020830392506300000fa5565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103","902060000154905060008111156300001195577fb842e70165ea1827273bc7a4271b485c64a747bd35bd7b804c41256bf4d5ecf132336040805190810160405280600681526020017f4d4f4449465900000000000000000000000000000000000000000000000000008152508789600001896040518082805190602001908083835b60208310151563000010aa57805182526020820191506020810190506020830392506300001081565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060010160405163000010f59594939291906300001848565b60405180910390a18285600001856040518082805190602001908083835b602083101515630000113c57805182526020820191506020810190506020830392506300001113565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206001019080519060200190630000118992919063000013ca565b50600191506300001310565b8285600001856040518082805190602001908083835b60208310151563000011d4578051825260208201915060208101905060208303925063000011ab565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206001019080519060200190630000122192919063000013ca565b50846001018054809190600101630000123c91906300001458565b90506001810185600001856040518082805190602001908083835b602083101515630000128057805182526020820191506020810190506020830392506300001257565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206000018190555083856001018281548110151563000012ce57fe5b9060005260206000209060020201600001908051906020019063000012f692919063000013ca565b508460020160008154809291906001019190505550600091505b509392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10630000135d57805160ff19168380011785556300001391565b828001600101855582156300001391579182015b8281111563000013905782518255916020019190600101906300001371565b5b50905063000013a291906300001490565b5090565b60405161011080630001597483390190565b6040516157e2806300015a8483390190565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10630000140f57805160ff19168380011785556300001443565b828001600101855582156300001443579182015b8281111563000014425782518255916020019190600101906300001423565b5b509050630000145491906300001490565b5090565b815481835581811115630000148b57600202816002028360005260206000209182019101630000148a919063000014bb565b5b505050565b63000014b891905b8082111563000014b45760008160009055506001016300001498565b5090565b90565b630000150591905b808211156300001501576000808201600063000014e291906300001508565b6001820160006101000a81549060ff02191690555060020163000014c3565b5090565b90565b50805460018160011615610100020316600290046000825580601f10630000153257506300001555565b601f016020900490600052602060002090810190630000155491906300001490565b5b50565b60006300001568825163000019e2565b905092915050565b600082601f8301121515630000158557600080fd5b815163000015a06300001599826300001961565b6300001932565b9150808252602083016020830185838301111563000015be57600080fd5b63000015cd8382846300001a02565b50505092915050565b60006020828403121563000015ea57600080fd5b600063000015fc848285016300001558565b91505092915050565b600080600060608486031215630000161c57600080fd5b600084015167ffffffffffffffff811115630000163857600080fd5b6300001648868287016300001570565b9350506020630000165d868287016300001558565b92505060406300001672868287016300001558565b9150509250925092565b63000016898163000019c2565b82525050565b6000630000169e8263000019ac565b80845263000016b68160208601602086016300001a02565b63000016c3816300001a3b565b602085010191505092915050565b600063000016e08263000019a1565b80845263000016f88160208601602086016300001a02565b6300001705816300001a3b565b602085010191505092915050565b6000815460018116600081146300001736576001811463000017585763000017a1565b607f600283041680865260ff19831660208701526040860193505063000017a1565b60028204808652602086019550630000177285630000198f565b60005b828110156300001798578154818901526001820191506020810190506300001775565b80880195505050505b505092915050565b600063000017b88263000019b7565b80845263000017d08160208601602086016300001a02565b63000017dd816300001a3b565b602085010191505092915050565b6000602e82527f61737365744e616d652073686f756c64206265206e6f74206e756c6c20616e6460208301527f206c657373207468616e203634200000000000000000000000000000000000006040830152606082019050919050565b600060a08201905063000018616000830188630000167c565b63000018726020830187630000167c565b81810360408301526300001888818663000016d1565b9050818103606083015263000018a08185630000168f565b9050818103608083015263000018b881846300001713565b90509695505050505050565b600060608201905063000018dd6000830186630000167c565b818103602083015263000018f3818563000017a9565b905063000019066040830184630000167c565b949350505050565b60006020820190508181036000830152630000192b8163000017eb565b9050919050565b6000604051905081810181811067ffffffffffffffff82111715630000195757600080fd5b8060405250919050565b600067ffffffffffffffff821115630000197a57600080fd5b601f19601f8301169050602081019050919050565b60008160005260206000209050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60005b838110156300001a245780820151818401526020810190506300001a05565b838111156300001a35576000848401525b50505050565b6000601f19601f8301169050919050565b62013f16806300001a5e6000396000f30060806040526004361062000395576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680622d657a146200039a5780623653c314620003de578063066290b4146200042357806309108b1714620004535780630bc95c7914620004975780630c9481b914620004c75780630e199f2b14620004f7578063112da303146200053c5780631191aacd146200056c5780631500025a14620005b0578063186248f014620005e05780631a1f1cd214620006245780631ddd996e14620006545780632adcd39014620006985780632ea4f77014620006dd5780633055ae8114620007225780633280e06214620007665780633889c9e414620007aa5780633cfd6e1214620007ee5780634203380114620008325780634425c426146200086257806347757031146200089257806347a6caff14620008d657806351cf7708146200091a57806355e2d120146200095e578063567f283614620009a45780635711734b14620009d45780635739967d1462000a185780635c7540bc1462000a5c5780635edfd6fa1462000a8c5780635f12ec2e1462000abc57806361e020cb1462000aec57806367e09af51462000b305780636a03849d1462000b6057806374b00d531462000ba4578063769fe3421462000bd45780637de83c701462000c045780637e3a1ef41462000c485780637e6f287c1462000c785780637f00af971462000cbc5780638a4451f51462000cec5780638ed13ef51462000d1c578063937caf021462000d60578063980683641462000da4578063a13d46e81462000dd4578063a4fd77111462000e18578063a7febe3a1462000e5c578063ad07c37a1462000ea0578063aed3d64b1462000ee4578063b09a50fe1462000f28578063b32941d81462000f58578063bc2d4b211462000f88578063bcc6cdb61462000fb8578063bced95351462000fe8578063bf0e94fe1462001018578063bfabb86d146200105c578063c03fd5e7146200108c578063c6125d0c14620010bc578063d1281a7814620010ec578063d3e9af5a146200111c578063d3f19ae0146200114c578063d617f06d146200117a578063d7e7948f14620011aa578063e3fbfc3f14620011da578063e92139da146200121e578063ece272e3146200124e578063ee19b0cf146200127e578063ee44d37414620012ae578063f0c9f25a14620012f5578063f6cb4bc51462001339578063f97669941462001369578063fd442d0514620013ad575b600080fd5b348015620003a757600080fd5b50620003c66004803603620003c0919081019062010b07565b620013f1565b604051620003d5919062013082565b60405180910390f35b348015620003eb57600080fd5b506200040a600480360362000404919081019062010b48565b62001859565b6040516200041a92919062012fad565b60405180910390f35b3480156200043057600080fd5b506200043b62001ea4565b6040516200044a919062013996565b60405180910390f35b3480156200046057600080fd5b506200047f6004803603620004799190810190620103d3565b62001eaa565b6040516200048e919062013082565b60405180910390f35b348015620004a457600080fd5b50620004af6200260c565b604051620004be91906201257b565b60405180910390f35b348015620004d457600080fd5b50620004df62002632565b604051620004ee9190620130d3565b60405180910390f35b3480156200050457600080fd5b506200052360048036036200051d9190810190620105ad565b620026d4565b604051620005339291906201309f565b60405180910390f35b3480156200054957600080fd5b50620005546200335b565b604051620005639190620130d3565b60405180910390f35b3480156200057957600080fd5b50620005986004803603620005929190810190620105ad565b620033fd565b604051620005a79190","62012edc565b60405180910390f35b348015620005bd57600080fd5b50620005c86200380d565b604051620005d791906201257b565b60405180910390f35b348015620005ed57600080fd5b506200060c6004803603620006069190810190620109eb565b620038d6565b6040516200061b919062013082565b60405180910390f35b3480156200063157600080fd5b506200063c620039e1565b6040516200064b9190620130d3565b60405180910390f35b3480156200066157600080fd5b506200068060048036036200067a919081019062010a2c565b62003a83565b6040516200068f919062013082565b60405180910390f35b348015620006a557600080fd5b50620006c46004803603620006be919081019062010cec565b620040ca565b604051620006d4929190620139fe565b60405180910390f35b348015620006ea57600080fd5b5062000709600480360362000703919081019062010a2c565b62004422565b6040516200071992919062012fad565b60405180910390f35b3480156200072f57600080fd5b506200074e6004803603620007489190810190620107f9565b62004ad5565b6040516200075d9190620130f7565b60405180910390f35b3480156200077357600080fd5b506200079260048036036200078c919081019062010bfd565b62004ce1565b604051620007a1919062013082565b60405180910390f35b348015620007b757600080fd5b50620007d66004803603620007d0919081019062010993565b6200560a565b604051620007e5919062013996565b60405180910390f35b348015620007fb57600080fd5b506200081a600480360362000814919081019062010a2c565b62005687565b60405162000829919062013082565b60405180910390f35b3480156200083f57600080fd5b506200084a62005f54565b604051620008599190620130d3565b60405180910390f35b3480156200086f57600080fd5b506200087a62005ff6565b60405162000889919062013996565b60405180910390f35b3480156200089f57600080fd5b50620008be6004803603620008b89190810190620103d3565b6200601e565b604051620008cd91906201300c565b60405180910390f35b348015620008e357600080fd5b50620009026004803603620008fc91908101906201090b565b6200629a565b60405162000911919062013082565b60405180910390f35b3480156200092757600080fd5b506200094660048036036200094091908101906201090b565b620064e7565b60405162000955919062013082565b60405180910390f35b3480156200096b57600080fd5b506200098a6004803603620009849190810190620105ad565b62006734565b6040516200099b93929190620139b3565b60405180910390f35b348015620009b157600080fd5b50620009bc620069d3565b604051620009cb919062013996565b60405180910390f35b348015620009e157600080fd5b5062000a006004803603620009fa919081019062010993565b620069dd565b60405162000a0f91906201257b565b60405180910390f35b34801562000a2557600080fd5b5062000a44600480360362000a3e9190810190620103d3565b62006a5f565b60405162000a53919062013996565b60405180910390f35b34801562000a6957600080fd5b5062000a7462006ef8565b60405162000a8391906201257b565b60405180910390f35b34801562000a9957600080fd5b5062000aa462006f22565b60405162000ab39190620130d3565b60405180910390f35b34801562000ac957600080fd5b5062000ad462006fc4565b60405162000ae391906201257b565b60405180910390f35b34801562000af957600080fd5b5062000b18600480360362000b12919081019062010898565b62006fee565b60405162000b27919062013082565b60405180910390f35b34801562000b3d57600080fd5b5062000b48620071fd565b60405162000b579190620130d3565b60405180910390f35b34801562000b6d57600080fd5b5062000b8c600480360362000b86919081019062010b07565b6200729f565b60405162000b9b919062013996565b60405180910390f35b34801562000bb157600080fd5b5062000bbc62007415565b60405162000bcb91906201257b565b60405180910390f35b34801562000be157600080fd5b5062000bec6200743b565b60405162000bfb9190620130d3565b60405180910390f35b34801562000c1157600080fd5b5062000c30600480360362000c2a919081019062010664565b620074dd565b60405162000c3f919062012edc565b60405180910390f35b34801562000c5557600080fd5b5062000c60620078f7565b60405162000c6f9190620130d3565b60405180910390f35b34801562000c8557600080fd5b5062000ca4600480360362000c9e9190810190620107f9565b62007999565b60405162000cb3919062013082565b60405180910390f35b34801562000cc957600080fd5b5062000cd462007ba5565b60405162000ce39190620130d3565b60405180910390f35b34801562000cf957600080fd5b5062000d0462007c47565b60405162000d1391906201257b565b60405180910390f35b34801562000d2957600080fd5b5062000d48600480360362000d4291908101906201090b565b62007c6d565b60405162000d57919062013082565b60405180910390f35b34801562000d6d57600080fd5b5062000d8c600480360362000d86919081019062010517565b62007eba565b60405162000d9b919062013996565b60405180910390f35b34801562000db157600080fd5b5062000dbc6200804b565b60405162000dcb9190620130d3565b60405180910390f35b34801562000de157600080fd5b5062000e00600480360362000dfa919081019062010a2c565b620080ed565b60405162000e0f919062013a68565b60405180910390f35b34801562000e2557600080fd5b5062000e44600480360362000e3e919081019062010898565b62008a59565b60405162000e53919062013082565b60405180910390f35b34801562000e6957600080fd5b5062000e88600480360362000e82919081019062010c69565b62008c68565b60405162000e97919062013082565b60405180910390f35b34801562000ead57600080fd5b5062000ecc600480360362000ec6919081019062010898565b62009038565b60405162000edb919062013082565b60405180910390f35b34801562000ef157600080fd5b5062000f10600480360362000f0a9190810190620104ab565b62009247565b60405162000f1f91906201300c565b60405180910390f35b34801562000f3557600080fd5b5062000f40620096ee565b60405162000f4f9190620130d3565b60405180910390f35b34801562000f6557600080fd5b5062000f7062009790565b60405162000f7f9190620130d3565b60405180910390f35b34801562000f9557600080fd5b5062000fa062009832565b60405162000faf919062013996565b60405180910390f35b34801562000fc557600080fd5b5062000fd06200983c565b60405162000fdf9190620130d3565b60405180910390f35b34801562000ff557600080fd5b5062001000620098de565b6040516200100f9190620130d3565b60405180910390f35b3480156200102557600080fd5b506200104460048036036200103e9190810190620106d5565b62009980565b60405162001053919062012fe8565b60405180910390f35b3480156200106957600080fd5b50620010746200a415565b604051620010839190620130d3565b60405180910390f35b3480156200109957600080fd5b50620010a46200a4b7565b604051620010b391906201257b565b60405180910390f35b348015620010c957600080fd5b50620010d46200a4dd565b604051620010e39190620130d3565b60405180910390f35b348015620010f957600080fd5b50620011046200a57f565b604051620011139190620130d3565b60405180910390f35b3480156200112957600080fd5b50620011346200a621565b60405162001143919062013996565b60405180910390f35b3480156200115957600080fd5b5062001178600480360362001172919081019062010a82565b6200a634565b005b3480156200118757600080fd5b50620011926200a882565b604051620011a19190620130d3565b60405180910390f35b348015620011b757600080fd5b50620011c26200a924565b604051620011d19190620130d3565b60405180910390f35b348015620011e757600080fd5b506200120660048036036200120091908101906201083e565b6200a9c6565b60405162001215919062013082565b60405180910390f35b3480156200122b57600080fd5b50620012366200abfc565b6040516200124591906201257b565b60405180910390f35b3480156200125b57600080fd5b50620012666200acc5565b604051620012759190620130d3565b60405180910390f35b3480156200128b57600080fd5b50620012966200ad67565b604051620012a59190620130d3565b60405180910390f35b348015620012bb57600080fd5b50620012da6004803603620012d4919081019062010a2c565b6200ae09565b604051620012ec949392919062012f00565b60405180910390f35b3480156200130257600080fd5b506200132160048036036200131b919081019062010664565b6200b451565b60405162001330919062013996565b60405180910390f35b3480156200134657600080fd5b50620013516200b77a565b604051620013609190620130d3565b60405180910390f35b3480156200137657600080fd5b506200139560048036036200138f91908101906201083e565b6200b81c565b604051620013a49190620130f7565b60405180910390f35b348015620013ba57600080fd5b50620013d96004803603620013d3919081019062010455565b6200ba51565b604051620013e8919062013082565b60405180910390f35b6000606060008060008060006200141289876200bf6190919063ffffffff16565b9550601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cfe3b125601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1630898c6040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401620014b594939291906201283c565b6040805180830381600087803b158015620014cf57600080fd5b505af1158015620014e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200150a919081019062010414565b809550819650505083151562001557576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016200154e9062013974565b60405180910390fd5b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663520bdf0a866040518263ffffffff167c","0100000000000000000000000000000000000000000000000000000000028152600401620015d091906201257b565b602060405180830381600087803b158015620015eb57600080fd5b505af115801562001600573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200162691908101906201078c565b15156200166a576040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040162001661906201328c565b60405180910390fd5b602660008a8152602001908152602001600020925060008360030154111515620016cb576040517fc703cb12000000000000000000000000000000000000000000000000000000008152600401620016c290620136aa565b60405180910390fd5b6000836004015411156200172e57620016e36200bf81565b83600401541015156200172d576040517fc703cb12000000000000000000000000000000000000000000000000000000008152600401620017249062013644565b60405180910390fd5b5b6000836004015414806200174e5750620017476200bf81565b8360040154105b91506200175a6200bf81565b836004018190555082602660008b8152602001908152602001600020600082015481600001556001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506002820154816002015560038201548160030155600482015481600401556005820154816005015590505081156200184a57826002015490505b82600301548111151562001849576200183a816200bf8e565b50808060010191505062001821565b5b81965050505050505092915050565b60608060008060008087601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663520bdf0a826040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401620018dc91906201257b565b602060405180830381600087803b158015620018f757600080fd5b505af11580156200190c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200193291908101906201078c565b151562001976576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016200196d906201328c565b60405180910390fd5b620019858c8c8c8c8c6200c0b1565b602760008d8152602001908152602001600020549450602560008681526020019081526020016000209350600092505b8a5183101562001ade578983815181101515620019ce57fe5b90602001906020020151846005018c85815181101515620019eb57fe5b906020019060200201516040518082805190602001908083835b60208310151562001a2c578051825260208201915060208101905060208303925062001a05565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020908051906020019062001a749291906200f84a565b50836006018b8481518110151562001a8857fe5b90602001906020020151908060018154018082558091505090600182039060005260206000200160009091929091909150908051906020019062001ace9291906200f84a565b50508280600101935050620019b5565b8360256000878152602001908152602001600020600082015481600001556001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060028201548160020155600382015481600301556004820160009054906101000a900460ff168160040160006101000a81548160ff021916908360ff160217905550600682018160060190805462001bbd9291906200f8d1565b50905050836006018054905060405190808252806020026020018201604052801562001bfe57816020015b606081526020019060019003908162001be85790505b509650836006018054905060405190808252806020026020018201604052801562001c3e57816020015b606081526020019060019003908162001c285790505b509550600091505b836006018054905082101562001e9557600082141562001c665762001e87565b836006018281548110151562001c7857fe5b906000526020600020018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801562001d1a5780601f1062001cee5761010080835404028352916020019162001d1a565b820191906000526020600020905b81548152906001019060200180831162001cfc57829003601f168201915b5050505050878381518110151562001d2e57fe5b9060200190602002018190525083600501846006018381548110151562001d5157fe5b90600052602060002001604051808280546001816001161561010002031660029004801562001dba5780601f1062001d9757610100808354040283529182019162001dba565b820191906000526020600020905b81548152906001019060200180831162001da5575b505091505090815260200160405180910390208054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801562001e655780601f1062001e395761010080835404028352916020019162001e65565b820191906000526020600020905b81548152906001019060200180831162001e4757829003601f168201915b5050505050868381518110151562001e7957fe5b906020019060200201819052505b818060010192505062001c46565b50505050509550959350505050565b60225481565b6000606060008060008087601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663520bdf0a826040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040162001f2e91906201257b565b602060405180830381600087803b15801562001f4957600080fd5b505af115801562001f5e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062001f8491908101906201078c565b151562001fc8576040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040162001fbf906201328c565b60405180910390fd5b62001fdd89876200c5d490919063ffffffff16565b9550601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cfe3b125601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1630898c6040518563ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040162002080949392919062012cca565b6040805180830381600087803b1580156200209a57600080fd5b505af1158015620020af573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620020d5919081019062010414565b809550819650505083151562002122576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016200211990620134ce565b60405180910390fd5b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663520bdf0a866040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200219b91906201257b565b602060405180830381600087803b158015620021b657600080fd5b505af1158015620021cb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620021f191908101906201078c565b151562002235576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016200222c906201328c565b60405180910390fd5b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c9f854c08a6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401620022ae91906201257b565b602060405180830381600087803b158015620022c957600080fd5b505af1158015620022de573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620023049190810190620103a7565b9250602460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151562002398576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016200238f9062013226565b60405180910390fd5b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166327033e768a6040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200241191906201257b565b602060405180830381600087803b1580156200242c57600080fd5b505af115801562002441573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620024679190810190620103a7565b91508173ffffffffffffffffffffffffffffffffffffffff1663a8cced2030601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660006040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401620024e7939291906201311b565b602060405180830381600087803b1580156200250257600080fd5b505af115801562002517573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200253d91908101906201078c565b5060238390806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790","5550506001602460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001965050505050505092915050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60098054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015620026cc5780601f10620026a057610100808354040283529160200191620026cc565b820191906000526020600020905b815481529060010190602001808311620026ae57829003601f168201915b505050505081565b60006060620026e26200f948565b60606000806000620026f36200f998565b620027018c8c8c8c620033fd565b9b508a51600302604051908082528060200260200182016040528015620027375781602001602082028038833980820191505090505b509450600092505b8a5183101562002c2e576000602760008d868151811015156200275e57fe5b90602001906020020151815260200190815260200160002054116200282d6040805190810160405280600f81526020017f20646f65736e27742065786973742100000000000000000000000000000000008152506200281e620027d98f88815181101515620027c957fe5b906020019060200201516200c5f4565b6040805190810160405280600781526020017f6e6f74654e6f20000000000000000000000000000000000000000000000000008152506200c75690919063ffffffff16565b6200c75690919063ffffffff16565b90151562002873576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016200286a919062013158565b60405180910390fd5b5060256000602760008e878151811015156200288b57fe5b90602001906020020151815260200190815260200160002054815260200190815260200160002060c06040519081016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff1660ff1660ff16815260200160068201805480602002602001604051908101604052809291908181526020016000905b8282101562002a36578382906000526020600020018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801562002a215780601f10620029f55761010080835404028352916020019162002a21565b820191906000526020600020905b81548152906001019060200180831162002a0357829003601f168201915b50505050508152602001906001019062002974565b5050505081525050955062002a4f86600001516200c930565b1562002b056040805190810160405280601181526020017f20686173206265656e206578706972656400000000000000000000000000000081525062002af662002ab18f8881518110151562002aa157fe5b906020019060200201516200c5f4565b6040805190810160405280600781526020017f6e6f74654e6f20000000000000000000000000000000000000000000000000008152506200c75690919063ffffffff16565b6200c75690919063ffffffff16565b90151562002b4b576040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040162002b42919062013158565b60405180910390fd5b5062002b5b86600001516200cc0d565b151562002b9f576040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040162002b969062013512565b60405180910390fd5b62002bdc8b8481518110151562002bb257fe5b906020019060200201518d600281518110151562002bcc57fe5b90602001906020020151620038d6565b151562002c20576040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040162002c179062013446565b60405180910390fd5b82806001019350506200273f565b600091505b8a51821015620033455760256000602760008e8681518110151562002c5457fe5b90602001906020020151815260200190815260200160002054815260200190815260200160002060c06040519081016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff1660ff1660ff16815260200160068201805480602002602001604051908101604052809291908181526020016000905b8282101562002dff578382906000526020600020018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801562002dea5780601f1062002dbe5761010080835404028352916020019162002dea565b820191906000526020600020905b81548152906001019060200180831162002dcc57829003601f168201915b50505050508152602001906001019062002d3d565b505050508152505095506000602860008e600281518110151562002e1f57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008860000151815260200190815260200160002060006101000a81548160ff02191690831515021790555062002eb88c600281518110151562002ea357fe5b9060200190602002015187600001516200cf02565b602960008e600281518110151562002ecc57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020908051906020019062002f259291906200f9ba565b506001602860008e600381518110151562002f3c57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008860000151815260200190815260200160002060006101000a81548160ff021916908315150217905550602960008d600381518110151562002fc057fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020866000015190806001815401808255809150509060018203906000526020600020016000909192909190915055508b60038151811015156200304257fe5b90602001906020020151866020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508560256000602760008f878151811015156200309b57fe5b9060200190602002015181526020019081526020016000205481526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604082015181600201556060820151816003015560808201518160040160006101000a81548160ff021916908360ff16021790555060a0820151816006019080519060200190620031669291906200fa0c565b50905050603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d12117998d88600001518d6040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401620031eb9392919062012f62565b606060405180830381600087803b1580156200320657600080fd5b505af11580156200321b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620032419190810190620107b8565b80925081955050508315156200328e576040517fc703cb12000000000000000000000000000000000000000000000000000000008152600401620032859062013358565b60405180910390fd5b8060006002811015156200329e57fe5b60200201518583600302815181101515620032b557fe5b9060200190602002018181525050806001600281101515620032d357fe5b60200201518560018460030201815181101515620032ed57fe5b90602001906020020181815250508a828151811015156200330a57fe5b9060200190602002015185600284600302018151811015156200332957fe5b9060200190602002018181525050818060010192505062002c33565b6001859750975050505050505094509492505050565b60028054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015620033f55780601f10620033c957610100808354040283529160200191620033f5565b820191906000526020600020905b815481529060010190602001808311620033d757829003601f168201915b505050505081565b606060006060600080600073ffffffffffffffffffffffffffffffffffffffff168960028151811015156200342e57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1614158015620034a35750600073ffffffffffffffffffffffffffffffffffffffff168960038151811015156200348057fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1614155b1515620034e7576040517fc703cb12000000000000000000000000000000000000000000000000000000008152600401620034de9062013710565b60405180910390fd5b620034f48989896200d10d565b925062003501896200d206565b809a5081955050508315156200354e576040517fc703cb12000000000000000000000000000000000000000000000000000000008152600401620035459062013622565b60405180910390fd5b602460008a60028151811015156200356257fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260","200160002060009054906101000a900460ff161515620035f8576040517fc703cb12000000000000000000000000000000000000000000000000000000008152600401620035ef90620137ba565b60405180910390fd5b602460008a60038151811015156200360c57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515620036a2576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016200369990620137ba565b60405180910390fd5b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cfe3b125601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168b60028151811015156200371357fe5b90602001906020020151868a6040518563ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200375c94939291906201265e565b6040805180830381600087803b1580156200377657600080fd5b505af11580156200378b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620037b1919081019062010414565b8092508193505050801515620037fe576040517fc703cb12000000000000000000000000000000000000000000000000000000008152600401620037f590620136ee565b60405180910390fd5b88945050505050949350505050565b6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631500025a6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156200389657600080fd5b505af1158015620038ab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620038d19190810190620103a7565b905090565b600080600080602760008781526020019081526020016000205492506000831115156200393a576040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040162003931906201390e565b60405180910390fd5b6025600084815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150602660006025600086815260200190815260200160002060030154815260200190815260200160002090508473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620039d857600193505b50505092915050565b60158054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801562003a7b5780601f1062003a4f5761010080835404028352916020019162003a7b565b820191906000526020600020905b81548152906001019060200180831162003a5d57829003601f168201915b505050505081565b6000606060008060008087601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663520bdf0a826040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040162003b0791906201257b565b602060405180830381600087803b15801562003b2257600080fd5b505af115801562003b37573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062003b5d91908101906201078c565b151562003ba1576040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040162003b98906201328c565b60405180910390fd5b6000602760008c81526020019081526020016000205411151562003bfc576040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040162003bf3906201390e565b60405180910390fd5b62003c258962003c168c896200bf6190919063ffffffff16565b6200c5d490919063ffffffff16565b9550601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cfe3b125601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1630898c6040518563ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040162003cc8949392919062012ab8565b6040805180830381600087803b15801562003ce257600080fd5b505af115801562003cf7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062003d1d919081019062010414565b8095508196505050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c9f854c08a6040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040162003d9e91906201257b565b602060405180830381600087803b15801562003db957600080fd5b505af115801562003dce573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062003df49190810190620103a7565b925083151562003e3b576040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040162003e329062013204565b60405180910390fd5b60256000602760008d8152602001908152602001600020548152602001908152602001600020915060058260040160006101000a81548160ff021916908360ff160217905550816025600084600001548152602001908152602001600020600082015481600001556001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060028201548160020155600382015481600301556004820160009054906101000a900460ff168160040160006101000a81548160ff021916908360ff160217905550600682018160060190805462003f649291906200f8d1565b509050506000602860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008460000154815260200190815260200160002060006101000a81548160ff02191690831515021790555062003fe58383600001546200cf02565b602960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209080519060200190620040399291906200f9ba565b5060368a908060018154018082558091505090600182039060005260206000200160009091929091909150555060016034600082825403925050819055507fabfed65a2687df1b7325e61044af6a3d283deb820e3c410c1bb72cbe29328a038a83600001546005604051620040b19392919062013a2b565b60405180910390a1600196505050505050509392505050565b600080600080620040da6200fa73565b620040e46200bf81565b881115156200412a576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016200412190620134f0565b60405180910390fd5b600089111562004186576200413e6200bf81565b891015151562004185576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016200417c9062013534565b60405180910390fd5b5b602b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663299f7f9d6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156200420d57600080fd5b505af115801562004222573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620042489190810190620109bf565b9250620043216001602c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663299f7f9d6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015620042d757600080fd5b505af1158015620042ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620043129190810190620109bf565b6200d48590919063ffffffff16565b915060c0604051908101604052808381526020018773ffffffffffffffffffffffffffffffffffffffff1681526020018481526020016200436f60018a03866200d4df90919063ffffffff16565b81526020018a815260200189815250905080602660008481526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160020155606082015181600301556080820151816004015560a0820151816005015590505082829450945050505094509492505050565b60608060606000806000806000806000602760008e8152602001908152602001600020541115156200448b576040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040162004482906201390e565b60405180910390fd5b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c9f854c08c6040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200450491906201257b565b602060405180830381600087803b1580156200451f57600080fd5b505af115801562004534573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200455a9190810190620103a7565b9350601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cfe3b125601a6000905490","6101000a900473ffffffffffffffffffffffffffffffffffffffff16308a8e6040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401620045fd949392919062012d34565b6040805180830381600087803b1580156200461757600080fd5b505af11580156200462c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062004652919081019062010414565b80965081975050508480156200467057506200466f8c856200d539565b5b1515620046b4576040517fc703cb12000000000000000000000000000000000000000000000000000000008152600401620046ab9062013468565b60405180910390fd5b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663520bdf0a876040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200472d91906201257b565b602060405180830381600087803b1580156200474857600080fd5b505af11580156200475d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200478391908101906201078c565b1515620047c7576040517fc703cb12000000000000000000000000000000000000000000000000000000008152600401620047be906201328c565b60405180910390fd5b602760008d815260200190815260200160002054925060256000848152602001908152602001600020915081600601805490506040519080825280602002602001820160405280156200482f57816020015b6060815260200190600190039081620048195790505b50985081600601805490506040519080825280602002602001820160405280156200486f57816020015b6060815260200190600190039081620048595790505b509750600090505b816006018054905081101562004ac6576000811415620048975762004ab8565b8160060181815481101515620048a957fe5b906000526020600020018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156200494b5780601f106200491f576101008083540402835291602001916200494b565b820191906000526020600020905b8154815290600101906020018083116200492d57829003601f168201915b505050505089828151811015156200495f57fe5b906020019060200201819052508160050182600601828154811015156200498257fe5b906000526020600020016040518082805460018160011615610100020316600290048015620049eb5780601f10620049c8576101008083540402835291820191620049eb565b820191906000526020600020905b815481529060010190602001808311620049d6575b505091505090815260200160405180910390208054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801562004a965780601f1062004a6a5761010080835404028352916020019162004a96565b820191906000526020600020905b81548152906001019060200180831162004a7857829003601f168201915b5050505050888281518110151562004aaa57fe5b906020019060200201819052505b808060010191505062004877565b50505050505050935093915050565b6060601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638d478f2933601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff163062004bed60038054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801562004bd85780601f1062004bac5761010080835404028352916020019162004bd8565b820191906000526020600020905b81548152906001019060200180831162004bba57829003601f168201915b5050505050886200d6ab90919063ffffffff16565b6040518563ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040162004c2a949392919062012598565b602060405180830381600087803b15801562004c4557600080fd5b505af115801562004c5a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062004c8091908101906201078c565b151562004cc4576040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040162004cbb90620135bc565b60405180910390fd5b62004cda82601b6200d6c190919063ffffffff16565b9050919050565b60006060600080600062004cf46200f948565b87601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663520bdf0a826040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040162004d6e91906201257b565b602060405180830381600087803b15801562004d8957600080fd5b505af115801562004d9e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062004dc491908101906201078c565b151562004e08576040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040162004dff906201328c565b60405180910390fd5b6000602760008d81526020019081526020016000205411151562004e63576040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040162004e5a906201390e565b60405180910390fd5b6000602760008c81526020019081526020016000205414151562004ebe576040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040162004eb59062013820565b60405180910390fd5b62004efb8962004eec8c62004edd8f8b6200bf6190919063ffffffff16565b6200bf6190919063ffffffff16565b6200c5d490919063ffffffff16565b9550601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c9f854c08a6040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040162004f7691906201257b565b602060405180830381600087803b15801562004f9157600080fd5b505af115801562004fa6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062004fcc9190810190620103a7565b9250601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cfe3b125601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1630898c6040518563ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200506f9493929190620128a6565b6040805180830381600087803b1580156200508957600080fd5b505af11580156200509e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620050c4919081019062010414565b8095508196505050838015620050e25750620050e18b846200d539565b5b151562005126576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016200511d9062013864565b60405180910390fd5b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663520bdf0a866040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200519f91906201257b565b602060405180830381600087803b158015620051ba57600080fd5b505af1158015620051cf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620051f591908101906201078c565b151562005239576040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040162005230906201328c565b60405180910390fd5b62005257602760008d8152602001908152602001600020546200cc0d565b50600460ff1660256000602760008f815260200190815260200160002054815260200190815260200160002060040160009054906101000a900460ff1660ff1614158015620052e35750600560ff1660256000602760008f815260200190815260200160002054815260200190815260200160002060040160009054906101000a900460ff1660ff1614155b151562005327576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016200531e90620132ae565b60405180910390fd5b602760008c815260200190815260200160002054602760008c8152602001908152602001600020819055506000602760008d81526020019081526020016000208190555060256000602760008d815260200190815260200160002054815260200190815260200160002060c06040519081016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff1660ff1660ff16815260200160068201805480602002602001604051908101604052809291908181526020016000905b8282101562005515578382906000526020600020018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015620055005780601f10620054d45761010080835404028352916020019162005500565b820191906000526020600020905b815481529060010190602001808311620054e257829003601f168201915b50505050508152602001906001019062005453565b50505050815250509150898260400181815250508160256000602760008e81526020019081526020016000205481526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550","604082015181600201556060820151816003015560808201518160040160006101000a81548160ff021916908360ff16021790555060a0820151816006019080519060200190620055f49291906200fa0c565b5090505060019650505050505050949350505050565b600080602560008481526020019081526020016000206002015411151562005669576040517fc703cb12000000000000000000000000000000000000000000000000000000008152600401620056609062013776565b60405180910390fd5b60256000838152602001908152602001600020600201549050919050565b6000606060008060006200569a6200f948565b600088601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663520bdf0a826040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200571691906201257b565b602060405180830381600087803b1580156200573157600080fd5b505af115801562005746573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200576c91908101906201078c565b1515620057b0576040517fc703cb12000000000000000000000000000000000000000000000000000000008152600401620057a7906201328c565b60405180910390fd5b6000602760008d8152602001908152602001600020541115156200580b576040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040162005802906201390e565b60405180910390fd5b620058348a620058258d8a6200bf6190919063ffffffff16565b6200c5d490919063ffffffff16565b9650601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c9f854c08b6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401620058af91906201257b565b602060405180830381600087803b158015620058ca57600080fd5b505af1158015620058df573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620059059190810190620103a7565b9350601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cfe3b125601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16308a8d6040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401620059a8949392919062012b8c565b6040805180830381600087803b158015620059c257600080fd5b505af1158015620059d7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620059fd919081019062010414565b809650819750505084801562005a1b575062005a1a8b856200d539565b5b151562005a5f576040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040162005a569062013666565b60405180910390fd5b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663520bdf0a876040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040162005ad891906201257b565b602060405180830381600087803b15801562005af357600080fd5b505af115801562005b08573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062005b2e91908101906201078c565b151562005b72576040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040162005b69906201328c565b60405180910390fd5b6000602760008d81526020019081526020016000205411151562005bcd576040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040162005bc49062013776565b60405180910390fd5b600260ff1660256000602760008f815260200190815260200160002054815260200190815260200160002060040160009054906101000a900460ff1660ff1614151562005c51576040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040162005c489062013512565b60405180910390fd5b60256000602760008e815260200190815260200160002054815260200190815260200160002060c06040519081016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff1660ff1660ff16815260200160068201805480602002602001604051908101604052809291908181526020016000905b8282101562005dfb578382906000526020600020018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801562005de65780601f1062005dba5761010080835404028352916020019162005de6565b820191906000526020600020905b81548152906001019060200180831162005dc857829003601f168201915b50505050508152602001906001019062005d39565b50505050815250509250602660008460600151815260200190815260200160002091506004836080019060ff16908160ff16815250508260256000602760008f81526020019081526020016000205481526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604082015181600201556060820151816003015560808201518160040160006101000a81548160ff021916908360ff16021790555060a082015181600601908051906020019062005efc9291906200fa0c565b50905050600197507fabfed65a2687df1b7325e61044af6a3d283deb820e3c410c1bb72cbe29328a038b8460000151600460405162005f3e9392919062013a2b565b60405180910390a1505050505050509392505050565b60138054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801562005fee5780601f1062005fc25761010080835404028352916020019162005fee565b820191906000526020600020905b81548152906001019060200180831162005fd057829003601f168201915b505050505081565b60006200601060016021546200d4df90919063ffffffff16565b602181905550602154905090565b606060006060600080601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c9f854c0886040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401620060a091906201257b565b602060405180830381600087803b158015620060bb57600080fd5b505af1158015620060d0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620060f69190810190620103a7565b9350601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cfe3b125601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1630868a6040518563ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040162006199949392919062012bf6565b6040805180830381600087803b158015620061b357600080fd5b505af1158015620061c8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620061ee919081019062010414565b80925081935050508015156200623b576040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040162006232906201348a565b60405180910390fd5b60368054806020026020016040519081016040528092919081815260200182805480156200628957602002820191906000526020600020905b81548152602001906001019080831162006274575b505050505094505050505092915050565b60006060600080620062ca86620062bb89866200d6ab90919063ffffffff16565b6200d6ab90919063ffffffff16565b9250601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cfe3b125601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1630620063e160048054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015620063cc5780601f10620063a057610100808354040283529160200191620063cc565b820191906000526020600020905b815481529060010190602001808311620063ae57829003601f168201915b50505050508c6200d6ab90919063ffffffff16565b878a6040518663ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040162006421959493929190620127d0565b6040805180830381600087803b1580156200643b57600080fd5b505af115801562006450573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062006476919081019062010414565b8092508193505050801515620064c3576040517fc703cb12000000000000000000000000000000000000000000000000000000008152600401620064ba9062013754565b60405180910390fd5b620064db8787601b6200d7da9092919063ffffffff16565b93505050509392505050565b6000606060008062006517866200650889866200d6ab90919063ffffffff16565b6200d6ab90919063ffffffff16565b9250601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cfe3b125601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306200662e60048054600181600116156101000203166002900480601f01602080910402602001","6040519081016040528092919081815260200182805460018160011615610100020316600290048015620066195780601f10620065ed5761010080835404028352916020019162006619565b820191906000526020600020905b815481529060010190602001808311620065fb57829003601f168201915b50505050508c6200d6ab90919063ffffffff16565b878a6040518663ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200666e959493929190620127d0565b6040805180830381600087803b1580156200668857600080fd5b505af11580156200669d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620066c3919081019062010414565b809250819350505080151562006710576040517fc703cb12000000000000000000000000000000000000000000000000000000008152600401620067079062013930565b60405180910390fd5b620067288787601b6200d9e39092919063ffffffff16565b93505050509392505050565b600060608060008060006060806200674e8c8c8c6200dd57565b6200675c8c8c8c8c6200e198565b9b5060019450600193508b60038151811015156200677657fe5b9060200190602002015192506001602a60008d60018151811015156200679857fe5b90602001906020020151815260200190815260200160002060008d6002815181101515620067c257fe5b90602001906020020151815260200190815260200160002060006101000a81548160ff0219169083151502179055506200684a8b60038151811015156200680557fe5b906020019060200201518c60048151811015156200681f57fe5b906020019060200201518d60008151811015156200683957fe5b9060200190602002015186620040ca565b80955081965050508a60008151811015156200686257fe5b906020019060200201516040519080825280602002602001820160405280156200689b5781602001602082028038833980820191505090505b50915060028b6000815181101515620068b057fe5b9060200190602002015102604051908082528060200260200182016040528015620068ea5781602001602082028038833980820191505090505b509050620068fb8c8c87876200e407565b91506200690a828d8c6200e758565b90507f47654361df9e68c2d68f0516c950f352ecd53d5dab049529876fa210579c06f883602960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040516200697d9291906201279c565b60405180910390a1620069b58b60008151811015156200699957fe5b906020019060200201516034546200d4df90919063ffffffff16565b60348190555083828297509750975050505050509450945094915050565b6000602154905090565b6000806025600084815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151562006a5657600080fd5b80915050919050565b6000806060600080600087601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663520bdf0a826040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040162006ae391906201257b565b602060405180830381600087803b15801562006afe57600080fd5b505af115801562006b13573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062006b3991908101906201078c565b151562006b7d576040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040162006b74906201328c565b60405180910390fd5b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c9f854c08a6040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040162006bf691906201257b565b602060405180830381600087803b15801562006c1157600080fd5b505af115801562006c26573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062006c4c9190810190620103a7565b9550601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cfe3b125601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1688888c6040518563ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040162006cef949392919062012732565b6040805180830381600087803b15801562006d0957600080fd5b505af115801562006d1e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062006d44919081019062010414565b809450819550505082151562006d91576040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040162006d88906201326a565b60405180910390fd5b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663520bdf0a856040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040162006e0a91906201257b565b602060405180830381600087803b15801562006e2557600080fd5b505af115801562006e3a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062006e6091908101906201078c565b151562006ea4576040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040162006e9b906201328c565b60405180910390fd5b602960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002091508180549050965050505050505092915050565b6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600b8054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801562006fbc5780601f1062006f905761010080835404028352916020019162006fbc565b820191906000526020600020905b81548152906001019060200180831162006f9e57829003601f168201915b505050505081565b6000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638d478f2933601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306200710660048054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015620070f15780601f10620070c557610100808354040283529160200191620070f1565b820191906000526020600020905b815481529060010190602001808311620070d357829003601f168201915b5050505050896200d6ab90919063ffffffff16565b6040518563ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040162007143949392919062012598565b602060405180830381600087803b1580156200715e57600080fd5b505af115801562007173573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200719991908101906201078c565b1515620071dd576040517fc703cb12000000000000000000000000000000000000000000000000000000008152600401620071d49062013930565b60405180910390fd5b620071f58383601b6200d9e39092919063ffffffff16565b905092915050565b600a8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015620072975780601f106200726b5761010080835404028352916020019162007297565b820191906000526020600020905b8154815290600101906020018083116200727957829003601f168201915b505050505081565b60006060600080620072bb86846200bf6190919063ffffffff16565b9250601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cfe3b125601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff163086896040518563ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200735e949392919062012b22565b6040805180830381600087803b1580156200737857600080fd5b505af11580156200738d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620073b3919081019062010414565b809250819350505080151562007400576040517fc703cb12000000000000000000000000000000000000000000000000000000008152600401620073f790620132d0565b60405180910390fd5b85602281905550602254935050505092915050565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015620074d55780601f10620074a957610100808354040283529160200191620074d5565b820191906000526020600020905b815481529060010190602001808311620074b757829003601f168201915b505050505081565b60608060008060606000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cfe3b125601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1630888b6040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401620075889493929190620129e4565b6040805180830381600087803b158015620075a257600080fd","5b505af1158015620075b7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620075dd919081019062010414565b80945081955050508215156200762a576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016200762190620133e0565b60405180910390fd5b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663520bdf0a856040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401620076a391906201257b565b602060405180830381600087803b158015620076be57600080fd5b505af1158015620076d3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620076f991908101906201078c565b15156200773d576040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040162007734906201328c565b60405180910390fd5b602380549050604051908082528060200260200182016040528015620077725781602001602082028038833980820191505090505b509150600090505b602380549050811015620078ea57601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c4dcade6602383815481101515620077d657fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200783b91906201257b565b602060405180830381600087803b1580156200785657600080fd5b505af11580156200786b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620078919190810190620103a7565b8282815181101515620078a057fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505080806001019150506200777a565b8195505050505050919050565b60018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015620079915780601f10620079655761010080835404028352916020019162007991565b820191906000526020600020905b8154815290600101906020018083116200797357829003601f168201915b505050505081565b6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638d478f2933601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff163062007ab160048054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801562007a9c5780601f1062007a705761010080835404028352916020019162007a9c565b820191906000526020600020905b81548152906001019060200180831162007a7e57829003601f168201915b5050505050886200d6ab90919063ffffffff16565b6040518563ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040162007aee949392919062012598565b602060405180830381600087803b15801562007b0957600080fd5b505af115801562007b1e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062007b4491908101906201078c565b151562007b88576040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040162007b7f9062013952565b60405180910390fd5b62007b9e82601b6200e98890919063ffffffff16565b9050919050565b60088054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801562007c3f5780601f1062007c135761010080835404028352916020019162007c3f565b820191906000526020600020905b81548152906001019060200180831162007c2157829003601f168201915b505050505081565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000606060008062007c9d8662007c8e89866200d6ab90919063ffffffff16565b6200d6ab90919063ffffffff16565b9250601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cfe3b125601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff163062007db460048054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801562007d9f5780601f1062007d735761010080835404028352916020019162007d9f565b820191906000526020600020905b81548152906001019060200180831162007d8157829003601f168201915b50505050508c6200d6ab90919063ffffffff16565b878a6040518663ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040162007df4959493929190620127d0565b6040805180830381600087803b15801562007e0e57600080fd5b505af115801562007e23573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062007e49919081019062010414565b809250819350505080151562007e96576040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040162007e8d906201339c565b60405180910390fd5b62007eae8787601b6200ebe79092919063ffffffff16565b93505050509392505050565b6000606062007ec86200f948565b62007ee56001850186600a0a88026200d4df90919063ffffffff16565b9250600160405190808252806020026020018201604052801562007f1e57816020015b606081526020019060019003908162007f085790505b50915060c0604051908101604052808881526020018a73ffffffffffffffffffffffffffffffffffffffff168152602001848152602001898152602001600160ff16815260200183815250905080602560008981526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604082015181600201556060820151816003015560808201518160040160006101000a81548160ff021916908360ff16021790555060a0820151816006019080519060200190620080239291906200fa0c565b5090505086602760008581526020019081526020016000208190555050509695505050505050565b60078054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015620080e55780601f10620080b957610100808354040283529160200191620080e5565b820191906000526020600020905b815481529060010190602001808311620080c757829003601f168201915b505050505081565b600060606000806000620081006200f948565b600088601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663520bdf0a826040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200817c91906201257b565b602060405180830381600087803b1580156200819757600080fd5b505af1158015620081ac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620081d291908101906201078c565b151562008216576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016200820d906201328c565b60405180910390fd5b6000602760008d81526020019081526020016000205411151562008271576040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040162008268906201390e565b60405180910390fd5b6200829a8a6200828b8d8a6200bf6190919063ffffffff16565b6200c5d490919063ffffffff16565b9650601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c9f854c08b6040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200831591906201257b565b602060405180830381600087803b1580156200833057600080fd5b505af115801562008345573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200836b9190810190620103a7565b9350601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cfe3b125601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16308a8d6040518563ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200840e949392919062012e08565b6040805180830381600087803b1580156200842857600080fd5b505af11580156200843d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062008463919081019062010414565b8096508197505050848015620084815750620084808b856200d539565b5b1515620084c5576040517fc703cb12000000000000000000000000000000000000000000000000000000008152600401620084bc90620137dc565b60405180910390fd5b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663520bdf0a876040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200853e91906201257b565b602060405180830381600087803b1580156200855957600080fd5b505af11580156200856e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200859491908101906201078c565b1515620085d8576040517fc703","cb12000000000000000000000000000000000000000000000000000000008152600401620085cf906201328c565b60405180910390fd5b600460ff1660256000602760008f815260200190815260200160002054815260200190815260200160002060040160009054906101000a900460ff1660ff161415156200865c576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016200865390620132f2565b60405180910390fd5b60256000602760008e815260200190815260200160002054815260200190815260200160002060c06040519081016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff1660ff1660ff16815260200160068201805480602002602001604051908101604052809291908181526020016000905b8282101562008806578382906000526020600020018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015620087f15780601f10620087c557610100808354040283529160200191620087f1565b820191906000526020600020905b815481529060010190602001808311620087d357829003601f168201915b50505050508152602001906001019062008744565b50505050815250509250602660008460600151815260200190815260200160002091506200883883600001516200c930565b15620088d66040805190810160405280601181526020017f20686173206265656e2065787069726564000000000000000000000000000000815250620088c7620088828f6200c5f4565b6040805190810160405280600781526020017f6e6f74654e6f20000000000000000000000000000000000000000000000000008152506200c75690919063ffffffff16565b6200c75690919063ffffffff16565b9015156200891c576040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040162008913919062013158565b60405180910390fd5b506002836080019060ff16908160ff16815250508260256000602760008f81526020019081526020016000205481526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604082015181600201556060820151816003015560808201518160040160006101000a81548160ff021916908360ff16021790555060a0820151816006019080519060200190620089fb9291906200fa0c565b509050507fabfed65a2687df1b7325e61044af6a3d283deb820e3c410c1bb72cbe29328a038b8460000151856080015160405162008a3c9392919062013a2b565b60405180910390a182608001519750505050505050509392505050565b6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638d478f2933601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff163062008b7160048054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801562008b5c5780601f1062008b305761010080835404028352916020019162008b5c565b820191906000526020600020905b81548152906001019060200180831162008b3e57829003601f168201915b5050505050896200d6ab90919063ffffffff16565b6040518563ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040162008bae949392919062012598565b602060405180830381600087803b15801562008bc957600080fd5b505af115801562008bde573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062008c0491908101906201078c565b151562008c48576040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040162008c3f906201339c565b60405180910390fd5b62008c608383601b6200ebe79092919063ffffffff16565b905092915050565b6000606062008c766200fa73565b84601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663520bdf0a826040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040162008cf091906201257b565b602060405180830381600087803b15801562008d0b57600080fd5b505af115801562008d20573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062008d4691908101906201078c565b151562008d8a576040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040162008d81906201328c565b60405180910390fd5b62008d946200bf81565b8811151562008dda576040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040162008dd190620138ca565b60405180910390fd5b62008e178662008e088a62008df98d886200bf6190919063ffffffff16565b6200bf6190919063ffffffff16565b6200c5d490919063ffffffff16565b925062008e27898488886200edeb565b50602660008a815260200190815260200160002060c06040519081016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820154815260200160038201548152602001600482015481526020016005820154815250509150861562008f33578160a001518810151562008f23576040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040162008f1a9062013578565b60405180910390fd5b8782608001818152505062008f98565b60008260800151111562008f8d5781608001518811151562008f8c576040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040162008f839062013578565b60405180910390fd5b5b878260a00181815250505b81602660008b81526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160020155606082015181600301556080820151816004015560a082015181600501559050506001935050505095945050505050565b6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638d478f2933601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306200915060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156200913b5780601f106200910f576101008083540402835291602001916200913b565b820191906000526020600020905b8154815290600101906020018083116200911d57829003601f168201915b5050505050896200d6ab90919063ffffffff16565b6040518563ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200918d949392919062012598565b602060405180830381600087803b158015620091a857600080fd5b505af1158015620091bd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620091e391908101906201078c565b151562009227576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016200921e9062013754565b60405180910390fd5b6200923f8383601b6200d7da9092919063ffffffff16565b905092915050565b60606000606060008088601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663520bdf0a826040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401620092ca91906201257b565b602060405180830381600087803b158015620092e557600080fd5b505af1158015620092fa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200932091908101906201078c565b151562009364576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016200935b906201328c565b60405180910390fd5b8789101515620093ab576040517fc703cb12000000000000000000000000000000000000000000000000000000008152600401620093a290620134ac565b60405180910390fd5b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c9f854c08b6040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200942491906201257b565b602060405180830381600087803b1580156200943f57600080fd5b505af115801562009454573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200947a9190810190620103a7565b9450601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cfe3b125601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1687878b6040518563ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200951d949392919062012732565b6040805180830381600087803b1580156200953757600080fd5b505af11580156200954c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062009572919081019062010414565b8093508194505050811515620095bf576040517fc703cb120000000000000000000000000000000000000000000000","00000000008152600401620095b6906201326a565b60405180910390fd5b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663520bdf0a846040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200963891906201257b565b602060405180830381600087803b1580156200965357600080fd5b505af115801562009668573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200968e91908101906201078c565b1515620096d2576040517fc703cb12000000000000000000000000000000000000000000000000000000008152600401620096c9906201328c565b60405180910390fd5b620096df858a8a6200f13c565b95505050505050949350505050565b60068054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015620097885780601f106200975c5761010080835404028352916020019162009788565b820191906000526020600020905b8154815290600101906020018083116200976a57829003601f168201915b505050505081565b60148054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156200982a5780601f10620097fe576101008083540402835291602001916200982a565b820191906000526020600020905b8154815290600101906020018083116200980c57829003601f168201915b505050505081565b6000603454905090565b60128054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015620098d65780601f10620098aa57610100808354040283529160200191620098d6565b820191906000526020600020905b815481529060010190602001808311620098b857829003601f168201915b505050505081565b60118054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015620099785780601f106200994c5761010080835404028352916020019162009978565b820191906000526020600020905b8154815290600101906020018083116200995a57829003601f168201915b505050505081565b6060806000806000806060600080601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cfe3b125601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16308b8e6040518563ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040162009a2f949392919062012d9e565b6040805180830381600087803b15801562009a4957600080fd5b505af115801562009a5e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062009a84919081019062010414565b809750819850505085151562009ad1576040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040162009ac890620138a8565b60405180910390fd5b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663520bdf0a886040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040162009b4a91906201257b565b602060405180830381600087803b15801562009b6557600080fd5b505af115801562009b7a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062009ba091908101906201078c565b151562009be4576040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040162009bdb906201328c565b60405180910390fd5b60028b5114801562009c2757508a600181518110151562009c0157fe5b906020019060200201518b600081518110151562009c1b57fe5b90602001906020020151125b151562009c6b576040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040162009c62906201359a565b60405180910390fd5b60008c51111562009ceb57600093505b8b5184101562009cea578b8481518110151562009c9457fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141562009cdc576001945062009cea565b838060010194505062009c7b565b5b84151562009dc557601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d2eef3a1886040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040162009d6c91906201257b565b602060405180830381600087803b15801562009d8757600080fd5b505af115801562009d9c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062009dc291908101906201078c565b94505b84151562009e0a576040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040162009e0190620131c0565b60405180910390fd5b6000602380549050141562009e22578298506200a405565b60008c5111801562009e7a5750600073ffffffffffffffffffffffffffffffffffffffff168c600081518110151562009e5757fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1614155b156200a02d57601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c9f854c08d600081518110151562009ece57fe5b906020019060200201516040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040162009f1291906201257b565b602060405180830381600087803b15801562009f2d57600080fd5b505af115801562009f42573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062009f689190810190620103a7565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151562009fdf576040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040162009fd69062013842565b60405180910390fd5b818c600081518110151562009ff057fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505b60018c511180156200a0855750600073ffffffffffffffffffffffffffffffffffffffff168c60018151811015156200a06257fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1614155b156200a23857601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c9f854c08d60018151811015156200a0d957fe5b906020019060200201516040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200a11d91906201257b565b602060405180830381600087803b1580156200a13857600080fd5b505af11580156200a14d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200a1739190810190620103a7565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156200a1ea576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016200a1e19062013336565b60405180910390fd5b808c60018151811015156200a1fb57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505b60028d511180156200a264575060008d60028151811015156200a25757fe5b9060200190602002015114155b156200a32a576000602760008f60028151811015156200a28057fe5b906020019060200201518152602001908152602001600020541115156200a2de576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016200a2d5906201390e565b60405180910390fd5b602760008e60028151811015156200a2f257fe5b906020019060200201518152602001908152602001600020548d60028151811015156200a31b57fe5b90602001906020020181815250505b603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b32cf81b8e8e8e6040518463ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200a3a79392919062013030565b600060405180830381600087803b1580156200a3c257600080fd5b505af11580156200a3d7573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506200a402919081019062010690565b98505b5050505050505050949350505050565b60048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156200a4af5780601f106200a483576101008083540402835291602001916200a4af565b820191906000526020600020905b8154815290600101906020018083116200a49157829003601f168201915b505050505081565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60058054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156200a5775780601f106200a54b576101008083540402835291602001916200a577565b820191906000526020600020905b8154815290600101906020018083116200a55957829003601f168201915b505050505081565b60038054600181600116156101000203166002900480601f01602080910402602001","60405190810160405280929190818152602001828054600181600116156101000203166002900480156200a6195780601f106200a5ed576101008083540402835291602001916200a619565b820191906000526020600020905b8154815290600101906020018083116200a5fb57829003601f168201915b505050505081565b60006200a62f601b6200f322565b905090565b60606000806000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c9f854c0886040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200a6b491906201257b565b602060405180830381600087803b1580156200a6cf57600080fd5b505af11580156200a6e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200a70a9190810190620103a7565b9050601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cfe3b125601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168387896040518563ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200a7ad9493929190620126c8565b6040805180830381600087803b1580156200a7c757600080fd5b505af11580156200a7dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200a802919081019062010414565b80935081945050508180156200a83457506200a81f8882620038d6565b806200a83357506200a83288826200d539565b5b5b15156200a878576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016200a86f90620137fe565b60405180910390fd5b5050505050505050565b600c8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156200a91c5780601f106200a8f0576101008083540402835291602001916200a91c565b820191906000526020600020905b8154815290600101906020018083116200a8fe57829003601f168201915b505050505081565b60108054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156200a9be5780601f106200a992576101008083540402835291602001916200a9be565b820191906000526020600020905b8154815290600101906020018083116200a9a057829003601f168201915b505050505081565b600060606000806200a9e286846200d6ab90919063ffffffff16565b9250601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cfe3b125601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306200aaf960048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156200aae45780601f106200aab8576101008083540402835291602001916200aae4565b820191906000526020600020905b8154815290600101906020018083116200aac657829003601f168201915b50505050508b6200d6ab90919063ffffffff16565b878a6040518663ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200ab39959493929190620127d0565b6040805180830381600087803b1580156200ab5357600080fd5b505af11580156200ab68573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200ab8e919081019062010414565b80925081935050508015156200abdb576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016200abd29062013952565b60405180910390fd5b6200abf186601b6200e98890919063ffffffff16565b935050505092915050565b6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e92139da6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156200ac8557600080fd5b505af11580156200ac9a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200acc09190810190620103a7565b905090565b600f8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156200ad5f5780601f106200ad33576101008083540402835291602001916200ad5f565b820191906000526020600020905b8154815290600101906020018083116200ad4157829003601f168201915b505050505081565b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156200ae015780601f106200add5576101008083540402835291602001916200ae01565b820191906000526020600020905b8154815290600101906020018083116200ade357829003601f168201915b505050505081565b606080606060006200ae1a6200f948565b60608060606200ae296200fa73565b6200ae6c8c8c6040805190810160405280600d81526020017f6765744e6f746544657461696c000000000000000000000000000000000000008152508d6200a634565b60256000602760008f815260200190815260200160002054815260200190815260200160002060c06040519081016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff1660ff1660ff16815260200160068201805480602002602001604051908101604052809291908181526020016000905b828210156200b016578382906000526020600020018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156200b0015780601f106200afd5576101008083540402835291602001916200b001565b820191906000526020600020905b8154815290600101906020018083116200afe357829003601f168201915b5050505050815260200190600101906200af54565b5050505081525050945060026040519080825280602002602001820160405280156200b0515781602001602082028038833980820191505090505b50935060026040519080825280602002602001820160405280156200b0855781602001602082028038833980820191505090505b50925060026040519080825280602002602001820160405280156200b0b95781602001602082028038833980820191505090505b509150601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c4dcade686602001516040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200b13991906201257b565b602060405180830381600087803b1580156200b15457600080fd5b505af11580156200b169573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200b18f9190810190620103a7565b8460008151811015156200b19f57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505084604001518360008151811015156200b1f057fe5b906020019060200201818152505084606001518360018151811015156200b21357fe5b9060200190602002018181525050602660008660600151815260200190815260200160002060c06040519081016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600282015481526020016003820154815260200160048201548152602001600582015481525050905080608001518260008151811015156200b2e357fe5b90602001906020020181815250508060a001518260018151811015156200b30657fe5b9060200190602002018181525050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c4dcade682602001516040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200b39191906201257b565b602060405180830381600087803b1580156200b3ac57600080fd5b505af11580156200b3c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200b3e79190810190620103a7565b8460018151811015156200b3f757fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505083838387608001519850985098509850505050505093509350935093565b60006060600080601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cfe3b125601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff163086896040518563ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200b4f9949392919062012a4e565b6040805180830381600087803b1580156200b51357600080fd5b505af11580156200b528573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200b54e919081019062010414565b80925081935050508015156200b59b576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016200b5929062013600565b60405180910390fd5b601e60009054","906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663520bdf0a836040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200b61491906201257b565b602060405180830381600087803b1580156200b62f57600080fd5b505af11580156200b644573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200b66a91908101906201078c565b15156200b6ae576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016200b6a5906201328c565b60405180910390fd5b603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166345be589e6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156200b73557600080fd5b505af11580156200b74a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200b7709190810190620109bf565b9350505050919050565b600e8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156200b8145780601f106200b7e8576101008083540402835291602001916200b814565b820191906000526020600020905b8154815290600101906020018083116200b7f657829003601f168201915b505050505081565b6060806000806200b83786846200d6ab90919063ffffffff16565b9250601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cfe3b125601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306200b94e60038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156200b9395780601f106200b90d576101008083540402835291602001916200b939565b820191906000526020600020905b8154815290600101906020018083116200b91b57829003601f168201915b50505050508b6200d6ab90919063ffffffff16565b878a6040518663ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200b98e959493929190620127d0565b6040805180830381600087803b1580156200b9a857600080fd5b505af11580156200b9bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200b9e3919081019062010414565b80925081935050508015156200ba30576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016200ba2790620135bc565b60405180910390fd5b6200ba4686601b6200d6c190919063ffffffff16565b935050505092915050565b6000606060008060008088601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663520bdf0a826040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200bad591906201257b565b602060405180830381600087803b1580156200baf057600080fd5b505af11580156200bb05573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200bb2b91908101906201078c565b15156200bb6f576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016200bb66906201328c565b60405180910390fd5b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cfe3b125601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1630898c6040518563ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200bc10949392919062012e72565b6040805180830381600087803b1580156200bc2a57600080fd5b505af11580156200bc3f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200bc65919081019062010414565b80955081965050508315156200bcb2576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016200bca9906201319e565b60405180910390fd5b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663520bdf0a866040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200bd2b91906201257b565b602060405180830381600087803b1580156200bd4657600080fd5b505af11580156200bd5b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200bd8191908101906201078c565b15156200bdc5576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016200bdbc906201328c565b60405180910390fd5b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c9f854c08b6040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200be3e91906201257b565b602060405180830381600087803b1580156200be5957600080fd5b505af11580156200be6e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200be949190810190620103a7565b9250602760008a81526020019081526020016000205491506000821115156200bef4576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016200beeb906201390e565b60405180910390fd5b602860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060009054906101000a900460ff1696505050505050509392505050565b60606200bf79836200bf73846200f330565b6200f375565b905092915050565b6000804290508091505090565b60008060256000848152602001908152602001600020905060028160040160006101000a81548160ff021916908360ff1602179055508060256000858152602001908152602001600020600082015481600001556001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060028201548160020155600382015481600301556004820160009054906101000a900460ff168160040160006101000a81548160ff021916908360ff16021790555060068201816006019080546200c0a39291906200f8d1565b509050506001915050919050565b60606000806000806000602760008c8152602001908152602001600020541115156200c114576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016200c10b906201390e565b60405180910390fd5b6200c1298a866200bf6190919063ffffffff16565b9450600093505b88518410156200c1a6576200c16789858151811015156200c14d57fe5b90602001906020020151866200d6ab90919063ffffffff16565b94506200c19688858151811015156200c17c57fe5b90602001906020020151866200d6ab90919063ffffffff16565b945083806001019450506200c130565b6200c1bb87866200c5d490919063ffffffff16565b9450601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cfe3b125601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1630888a6040518563ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200c25e949392919062012910565b6040805180830381600087803b1580156200c27857600080fd5b505af11580156200c28d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200c2b3919081019062010414565b8093508194505050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c9f854c0886040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200c33491906201257b565b602060405180830381600087803b1580156200c34f57600080fd5b505af11580156200c364573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200c38a9190810190620103a7565b90508180156200c3a257506200c3a18a826200d539565b5b15156200c3e6576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016200c3dd90620136cc565b60405180910390fd5b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663520bdf0a846040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200c45f91906201257b565b602060405180830381600087803b1580156200c47a57600080fd5b505af11580156200c48f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200c4b591908101906201078c565b15156200c4f9576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016200c4f0906201328c565b60405180910390fd5b600460ff1660256000602760008e815260200190815260200160002054815260200190815260200160002060040160009054906101000a900460ff1660ff16141580156200c5845750600560ff1660256000602760008e815260200190815260200160002054815260200190815260200160002060040160009054906101000a900460ff1660ff1614155b15156200c5c8576040517fc703cb120000000000000000000000000000","000000000000000000000000000081526004016200c5bf90620132ae565b60405180910390fd5b50505050505050505050565b60606200c5ec836200c5e6846200f54f565b6200f375565b905092915050565b606060008060606000808614156200c644576040805190810160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525094506200c74d565b8593505b6000841415156200c671578280600101935050600a848115156200c66857fe5b0493506200c648565b826040519080825280601f01601f1916602001820160405280156200c6a55781602001602082028038833980820191505090505b5091506001830390505b6000861415156200c74957600a868115156200c6c757fe5b066030017f0100000000000000000000000000000000000000000000000000000000000000028282806001900393508151811015156200c70357fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a868115156200c74057fe5b0495506200c6af565b8194505b50505050919050565b606080606080606060008088955087945084518651016040519080825280601f01601f1916602001820160405280156200c79f5781602001602082028038833980820191505090505b50935083925060009150600090505b85518110156200c8655785818151811015156200c7c757fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f01000000000000000000000000000000000000000000000000000000000000000283838060010194508151811015156200c82757fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080806001019150506200c7ae565b600090505b84518110156200c9215784818151811015156200c88357fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f01000000000000000000000000000000000000000000000000000000000000000283838060010194508151811015156200c8e357fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080806001019150506200c86a565b83965050505050505092915050565b60006200c93c6200f948565b60006025600085815260200190815260200160002060c06040519081016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff1660ff1660ff16815260200160068201805480602002602001604051908101604052809291908181526020016000905b828210156200cad5578382906000526020600020018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156200cac05780601f106200ca94576101008083540402835291602001916200cac0565b820191906000526020600020905b8154815290600101906020018083116200caa257829003601f168201915b5050505050815260200190600101906200ca13565b50505050815250509150816080015160ff16600360ff1614156200cafd57600192506200cc06565b602660008360600151815260200190815260200160002090506200cb206200bf81565b816005015410156200cc05576003826080019060ff16908160ff168152505081602560008681526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604082015181600201556060820151816003015560808201518160040160006101000a81548160ff021916908360ff16021790555060a08201518160060190805190602001906200cbf79291906200fa0c565b50905050600192506200cc06565b5b5050919050565b60006200cc196200f948565b60006025600085815260200190815260200160002060c06040519081016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff1660ff1660ff16815260200160068201805480602002602001604051908101604052809291908181526020016000905b828210156200cdb2578382906000526020600020018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156200cd9d5780601f106200cd71576101008083540402835291602001916200cd9d565b820191906000526020600020905b8154815290600101906020018083116200cd7f57829003601f168201915b5050505050815260200190600101906200ccf0565b50505050815250509150816080015160ff16600260ff1614156200cdda57600192506200cefb565b602660008360600151815260200190815260200160002090506000816004015414156200ce0b57600092506200cefb565b6200ce156200bf81565b816004015410156200cefa576002826080019060ff16908160ff168152505081602560008681526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604082015181600201556060820151816003015560808201518160040160006101000a81548160ff021916908360ff16021790555060a08201518160060190805190602001906200ceec9291906200fa0c565b50905050600192506200cefb565b5b5050919050565b6060600060606000806001602860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600088815260200190815260200160002060006101000a81548160ff021916908315150217905515156200cfb7576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016200cfae906201337a565b60405180910390fd5b602960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020935060018480549050036040519080825280602002602001820160405280156200d02f5781602001602082028038833980820191505090505b509250600090505b82518110156200d10057811580156200d06857508584828154811015156200d05b57fe5b9060005260206000200154145b156200d07357600191505b81156200d0ba5783600182018154811015156200d08c57fe5b906000526020600020015483828151811015156200d0a657fe5b90602001906020020181815250506200d0f2565b83818154811015156200d0c957fe5b906000526020600020015483828151811015156200d0e357fe5b90602001906020020181815250505b80806001019150506200d037565b8294505050505092915050565b60608060008060008092505b87518310156200d160576200d15088848151811015156200d13657fe5b90602001906020020151856200c5d490919063ffffffff16565b935082806001019350506200d119565b600091505b86518210156200d1ac576200d19c87838151811015156200d18257fe5b90602001906020020151856200bf6190919063ffffffff16565b935081806001019250506200d165565b600090505b85518110156200d1f8576200d1e886828151811015156200d1ce57fe5b90602001906020020151856200d6ab90919063ffffffff16565b935080806001019150506200d1b1565b839450505050509392505050565b6000606080600080600086516040519080825280602002602001820160405280156200d2415781602001602082028038833980820191505090505b509350600090505b86518110156200d4755760018114806200d2a7575086818151811015156200d26d57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff16145b156200d3175786818151811015156200d2bc57fe5b9060200190602002015184828151811015156200d2d557fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506200d467565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e62832288838151811015156200d36457fe5b906020019060200201516040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200d3a891906201257b565b6040805180830381600087803b1580156200d3c257600080fd5b505af11580156200d3d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200d3fd919081019062010414565b80945081935050508215156200d41a57600084955095506200d47c565b8184828151811015156200d42a57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505b80806001019150506200d249565b8284955095505b50505050915091565b6000808383111515156200d4d0576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016200d4c79062013732565b60405180910390fd5b82840390508091505092915050565b60008082840190508381101515156200d52f576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016200d5269062013556565b60405180910390fd5b8091505092915050565b600080600080602760008781526020019081526020016000205492506000831115156200d59d576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016200d594906201390e565b60405180910390fd5b60256000","84815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150602660006025600086815260200190815260200160002060030154815260200190815260200160002090508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff1614806200d68d57508473ffffffffffffffffffffffffffffffffffffffff168160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b156200d69d57600093506200d6a2565b600193505b50505092915050565b60606200d6b983836200f375565b905092915050565b606082600001826040518082805190602001908083835b6020831015156200d6ff57805182526020820191506020810190506020830392506200d6d8565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206001018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156200d7cd5780601f106200d7a1576101008083540402835291602001916200d7cd565b820191906000526020600020905b8154815290600101906020018083116200d7af57829003601f168201915b5050505050905092915050565b60008084600001846040518082805190602001908083835b6020831015156200d81957805182526020820191506020810190506020830392506200d7f2565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060000154905060008111156200d9d6577fb842e70165ea1827273bc7a4271b485c64a747bd35bd7b804c41256bf4d5ecf132336040805190810160405280600681526020017f4d4f4449465900000000000000000000000000000000000000000000000000008152508789600001896040518082805190602001908083835b6020831015156200d8f257805182526020820191506020810190506020830392506200d8cb565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206001016040516200d93b959493929190620125ec565b60405180910390a18285600001856040518082805190602001908083835b6020831015156200d98057805182526020820191506020810190506020830392506200d959565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060010190805190602001906200d9cb9291906200f84a565b50600191506200d9db565b600091505b509392505050565b60008084600001846040518082805190602001908083835b6020831015156200da2257805182526020820191506020810190506020830392506200d9fb565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060000154905060008111156200dbdf577fb842e70165ea1827273bc7a4271b485c64a747bd35bd7b804c41256bf4d5ecf132336040805190810160405280600681526020017f4d4f4449465900000000000000000000000000000000000000000000000000008152508789600001896040518082805190602001908083835b6020831015156200dafb57805182526020820191506020810190506020830392506200dad4565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206001016040516200db44959493929190620125ec565b60405180910390a18285600001856040518082805190602001908083835b6020831015156200db8957805182526020820191506020810190506020830392506200db62565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060010190805190602001906200dbd49291906200f84a565b50600191506200dd4f565b8285600001856040518082805190602001908083835b6020831015156200dc1c57805182526020820191506020810190506020830392506200dbf5565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060010190805190602001906200dc679291906200f84a565b508460010180548091906001016200dc8091906200fac0565b90506001810185600001856040518082805190602001908083835b6020831015156200dcc257805182526020820191506020810190506020830392506200dc9b565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020600001819055508385600101828154811015156200dd0f57fe5b906000526020600020906002020160000190805190602001906200dd359291906200f84a565b508460020160008154809291906001019190505550600091505b509392505050565b600483511480156200dd6a575060058251145b80156200dd78575060008151115b15156200ddbc576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016200ddb390620133be565b60405180910390fd5b60008260028151811015156200ddce57fe5b906020019060200201511180156200ddff5750600a8260028151811015156200ddf357fe5b90602001906020020151105b80156200de2d57506200de116200bf81565b8260048151811015156200de2157fe5b90602001906020020151115b15156200de71576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016200de689062013402565b60405180910390fd5b60008260038151811015156200de8357fe5b9060200190602002015111156200df77576200de9e6200bf81565b8260038151811015156200deae57fe5b906020019060200201511115156200defd576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016200def49062013424565b60405180910390fd5b8160038151811015156200df0d57fe5b906020019060200201518260048151811015156200df2757fe5b906020019060200201511115156200df76576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016200df6d90620138ec565b60405180910390fd5b5b60008260008151811015156200df8957fe5b906020019060200201511180156200dfbb57506101f58260008151811015156200dfaf57fe5b90602001906020020151105b15156200dfff576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016200dff69062013798565b60405180910390fd5b60008260018151811015156200e01157fe5b906020019060200201511115156200e060576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016200e05790620135de565b60405180910390fd5b60008160008151811015156200e07257fe5b90602001906020020151511180156200e0a6575060ff8160008151811015156200e09857fe5b906020019060200201515111155b15156200e0ea576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016200e0e19062013314565b60405180910390fd5b602a60008360018151811015156200e0fe57fe5b90602001906020020151815260200190815260200160002060008360028151811015156200e12857fe5b90602001906020020151815260200190815260200160002060009054906101000a900460ff161515156200e193576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016200e18a90620131e2565b60405180910390fd5b505050565b6060600060606000806200e1ae8989896200f633565b92506200e1bb896200d206565b809a5081955050508315156200e208576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016200e1ff9062013622565b60405180910390fd5b8860038151811015156200e21857fe5b906020019060200201519150602460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156200e2b5576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016200e2ac90620137ba565b60405180910390fd5b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cfe3b125601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1630868a6040518563ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200e35694939291906201297a565b6040805180830381600087803b1580156200e37057600080fd5b505af11580156200e385573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200e3ab919081019062010414565b80955081925050508315156200e3f8576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016200e3ef906201317c565b60405180910390fd5b88945050505050949350505050565b606060006060806060600060028251026040519080825280602002602001820160405280156200e4465781602001602082028038833980820191505090505b5092508860008151811015156200e45957fe5b906020019060200201516040519080825280602002602001820160405280156200e4925781602001602082028038833980820191505090505b509150600090505b8860008151811015156200e4aa57fe5b906020019060200201518110156200e7485760008114156200e4e4576200e4dc6001896200d48590919063ffffffff16565b94506200e5be565b6200e5bb6001602b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663299f7f9d6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156200e57157600080fd5b505af11580156200e586573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200e5ac","9190810190620109bf565b6200d48590919063ffffffff16565b94505b6001602860008c60038151811015156200e5d457fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087815260200190815260200160002060006101000a81548160ff021916908315150217905550602960008b60038151811015156200e65457fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208590806001815401808255809150509060018203906000526020600020016000909192909190915055506200e71d8a60038151811015156200e6d657fe5b9060200190602002015188878c60018151811015156200e6f257fe5b906020019060200201518d60028151811015156200e70c57fe5b906020019060200201518662007eba565b82828151811015156200e72c57fe5b906020019060200201818152505080806001019150506200e49a565b8195505050505050949350505050565b6060806000806200e7686200f998565b600060028951026040519080825280602002602001820160405280156200e79e5781602001602082028038833980820191505090505b509450600090505b88518110156200e97957602760008a838151811015156200e7c357fe5b906020019060200201518152602001908152602001600020549250603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d121179989858a6040518463ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200e85b9392919062012f62565b606060405180830381600087803b1580156200e87657600080fd5b505af11580156200e88b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200e8b19190810190620107b8565b80935081955050508160006002811015156200e8c957fe5b602002015185826002028151811015156200e8e057fe5b90602001906020020181815250508160016002811015156200e8fe57fe5b602002015185600183600202018151811015156200e91857fe5b90602001906020020181815250508315156200e96b576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016200e9629062013358565b60405180910390fd5b80806001019150506200e7a6565b84955050505050509392505050565b60008083600001836040518082805190602001908083835b6020831015156200e9c757805182526020820191506020810190506020830392506200e9a0565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060000154905060008114156200ea1457600091506200ebe0565b7fb842e70165ea1827273bc7a4271b485c64a747bd35bd7b804c41256bf4d5ecf132336040805190810160405280600681526020017f44454c45544500000000000000000000000000000000000000000000000000008152508688600001886040518082805190602001908083835b6020831015156200eaaa57805182526020820191506020810190506020830392506200ea83565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206001016040516200eaf3959493929190620125ec565b60405180910390a183600001836040518082805190602001908083835b6020831015156200eb3757805182526020820191506020810190506020830392506200eb10565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206000808201600090556001820160006200eb8591906200faf5565b5050600184600101600183038154811015156200eb9e57fe5b906000526020600020906002020160010160006101000a81548160ff021916908315150217905550836002016000815480929190600190039190505550600191505b5092915050565b60008084600001846040518082805190602001908083835b6020831015156200ec2657805182526020820191506020810190506020830392506200ebff565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060000154905060008111156200ec7357600091506200ede3565b8285600001856040518082805190602001908083835b6020831015156200ecb057805182526020820191506020810190506020830392506200ec89565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060010190805190602001906200ecfb9291906200f84a565b508460010180548091906001016200ed1491906200fac0565b90506001810185600001856040518082805190602001908083835b6020831015156200ed5657805182526020820191506020810190506020830392506200ed2f565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020600001819055508385600101828154811015156200eda357fe5b906000526020600020906002020160000190805190602001906200edc99291906200f84a565b508460020160008154809291906001019190505550600191505b509392505050565b600080600080601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c9f854c0876040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200ee6a91906201257b565b602060405180830381600087803b1580156200ee8557600080fd5b505af11580156200ee9a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200eec09190810190620103a7565b9050601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cfe3b125601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16308a896040518563ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200ef63949392919062012c60565b6040805180830381600087803b1580156200ef7d57600080fd5b505af11580156200ef92573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200efb8919081019062010414565b80935081945050508180156200efd657506200efd588826200f72c565b5b15156200f01a576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016200f0119062013688565b60405180910390fd5b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663520bdf0a846040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200f09391906201257b565b602060405180830381600087803b1580156200f0ae57600080fd5b505af11580156200f0c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200f0e991908101906201078c565b15156200f12d576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016200f124906201328c565b60405180910390fd5b60019350505050949350505050565b60606000806060600080602960008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002094506000858054905014156200f1ef57848054806020026020016040519081016040528092919081815260200182805480156200f1e257602002820191906000526020600020905b8154815260200190600101908083116200f1cd575b505050505095506200f316565b8480549050881015156200f23a576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016200f2319062013248565b60405180910390fd5b84805490508711156200f25457848054905093506200f258565b8693505b60008411156200f26b578784036200f26e565b60005b6040519080825280602002602001820160405280156200f29d5781602001602082028038833980820191505090505b509250600091508790505b838110156200f312576025600086838154811015156200f2c457fe5b906000526020600020015481526020019081526020016000206002015483838060010194508151811015156200f2f657fe5b906020019060200201818152505080806001019150506200f2a8565b8295505b50505050509392505050565b600081600201549050919050565b606060206040519080825280601f01601f1916602001820160405280156200f3675781602001602082028038833980820191505090505b509050816020820152919050565b606080606080606060008088955087945084518651016040519080825280601f01601f1916602001820160405280156200f3be5781602001602082028038833980820191505090505b50935083925060009150600090505b85518110156200f4845785818151811015156200f3e657fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f01000000000000000000000000000000000000000000000000000000000000000283838060010194508151811015156200f44657fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080806001019150506200f3cd565b600090505b84518110156200f5405784818151811015156200f4a257fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f01000000000000000000000000000000000000000000000000000000000000000283838060010194508151811015156200f50257fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080806001019150506200f489565b83965050505050505092915050565b6060600080836c0100000000000000000000000002915060146040519080825280601f01601f1916602001820160405280156200f59b5781602001602082028038833980820191505090505b509250600090","505b60148110156200f62c5781816014811015156200f5bc57fe5b1a7f01000000000000000000000000000000000000000000000000000000000000000283828151811015156200f5ee57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080806001019150506200f5a3565b5050919050565b60608060008060008092505b87518310156200f686576200f67688848151811015156200f65c57fe5b90602001906020020151856200c5d490919063ffffffff16565b935082806001019350506200f63f565b600091505b86518210156200f6d2576200f6c287838151811015156200f6a857fe5b90602001906020020151856200bf6190919063ffffffff16565b935081806001019250506200f68b565b600090505b85518110156200f71e576200f70e86828151811015156200f6f457fe5b90602001906020020151856200d6ab90919063ffffffff16565b935080806001019150506200f6d7565b839450505050509392505050565b600080600060266000868152602001908152602001600020600001541115156200f78d576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016200f7849062013886565b60405180910390fd5b6026600085815260200190815260200160002090508273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff1614806200f82e57508273ffffffffffffffffffffffffffffffffffffffff168160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b156200f83e57600091506200f843565b600191505b5092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200f88d57805160ff19168380011785556200f8be565b828001600101855582156200f8be579182015b828111156200f8bd5782518255916020019190600101906200f8a0565b5b5090506200f8cd91906200fb41565b5090565b8280548282559060005260206000209081019282156200f9355760005260206000209182015b828111156200f93457828290805460018160011615610100020316600290046200f9239291906200fb69565b50916001019190600101906200f8f7565b5b5090506200f94491906200fbf7565b5090565b60c06040519081016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001600060ff168152602001606081525090565b6040805190810160405280600290602082028038833980820191505090505090565b8280548282559060005260206000209081019282156200f9f9579160200282015b828111156200f9f85782518255916020019190600101906200f9db565b5b5090506200fa0891906200fb41565b5090565b8280548282559060005260206000209081019282156200fa60579160200282015b828111156200fa5f5782518290805190602001906200fa4e9291906200fc28565b50916020019190600101906200fa2d565b5b5090506200fa6f91906200fbf7565b5090565b60c06040519081016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081526020016000815260200160008152602001600081525090565b8154818355818111156200faf0576002028160020283600052602060002091820191016200faef91906200fcaf565b5b505050565b50805460018160011615610100020316600290046000825580601f106200fb1d57506200fb3e565b601f0160209004906000526020600020908101906200fb3d91906200fb41565b5b50565b6200fb6691905b808211156200fb625760008160009055506001016200fb48565b5090565b90565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200fba457805485556200fbe4565b828001600101855582156200fbe457600052602060002091601f016020900482015b828111156200fbe35782548255916001019190600101906200fbc6565b5b5090506200fbf391906200fb41565b5090565b6200fc2591905b808211156200fc2157600081816200fc1791906200faf5565b506001016200fbfe565b5090565b90565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200fc6b57805160ff19168380011785556200fc9c565b828001600101855582156200fc9c579182015b828111156200fc9b5782518255916020019190600101906200fc7e565b5b5090506200fcab91906200fb41565b5090565b6200fcf491905b808211156200fcf057600080820160006200fcd291906200faf5565b6001820160006101000a81549060ff0219169055506002016200fcb6565b5090565b90565b60006200fd05823562013e14565b905092915050565b60006200fd1b825162013e14565b905092915050565b600082601f83011215156200fd3757600080fd5b81356200fd4e6200fd488262013ab3565b62013a85565b915081818352602084019350602081019050838560208402820111156200fd7457600080fd5b60005b838110156200fda857816200fd8d88826200fcf7565b8452602084019350602083019250506001810190506200fd77565b5050505092915050565b600082601f83011215156200fdc657600080fd5b60046200fddd6200fdd78262013adc565b62013a85565b915081838560208402820111156200fdf457600080fd5b60005b838110156200fe2857816200fe0d888262010179565b8452602084019350602083019250506001810190506200fdf7565b5050505092915050565b600082601f83011215156200fe4657600080fd5b81356200fe5d6200fe578262013aff565b62013a85565b9150818183526020840193506020810190508360005b838110156200fea757813586016200fe8c88826201018f565b8452602084019350602083019250506001810190506200fe73565b5050505092915050565b600082601f83011215156200fec557600080fd5b81356200fedc6200fed68262013b28565b62013a85565b915081818352602084019350602081019050838560208402820111156200ff0257600080fd5b60005b838110156200ff3657816200ff1b88826201024b565b8452602084019350602083019250506001810190506200ff05565b5050505092915050565b600082601f83011215156200ff5457600080fd5b81356200ff6b6200ff658262013b51565b62013a85565b9150818183526020840193506020810190508360005b838110156200ffb557813586016200ff9a888262010261565b8452602084019350602083019250506001810190506200ff81565b5050505092915050565b600082601f83011215156200ffd357600080fd5b81516200ffea6200ffe48262013b51565b62013a85565b9150818183526020840193506020810190508360005b83811015620100345781518601620100198882620102bf565b84526020840193506020830192505060018101905062010000565b5050505092915050565b600082601f83011215156201005257600080fd5b600262010069620100638262013b7a565b62013a85565b915081838560208402820111156201008057600080fd5b60005b83811015620100b4578162010099888262010391565b84526020840193506020830192505060018101905062010083565b5050505092915050565b600082601f8301121515620100d257600080fd5b8135620100e9620100e38262013b9d565b62013a85565b915081818352602084019350602081019050838560208402820111156201010f57600080fd5b60005b838110156201014357816201012888826201037b565b84526020840193506020830192505060018101905062010112565b5050505092915050565b60006201015b823562013e34565b905092915050565b600062010171825162013e34565b905092915050565b600062010187823562013e40565b905092915050565b600082601f8301121515620101a357600080fd5b8135620101ba620101b48262013bc6565b62013a85565b91508082526020830160208301858383011115620101d757600080fd5b620101e483828462013e86565b50505092915050565b600082601f83011215156201020157600080fd5b813562010218620102128262013bf3565b62013a85565b915080825260208301602083018583830111156201023557600080fd5b6201024283828462013e86565b50505092915050565b600062010259823562013e4a565b905092915050565b600082601f83011215156201027557600080fd5b81356201028c620102868262013c20565b62013a85565b91508082526020830160208301858383011115620102a957600080fd5b620102b683828462013e86565b50505092915050565b600082601f8301121515620102d357600080fd5b8151620102ea620102e48262013c20565b62013a85565b915080825260208301602083018583830111156201030757600080fd5b6201031483828462013e95565b50505092915050565b600082601f83011215156201033157600080fd5b813562010348620103428262013c4d565b62013a85565b915080825260208301602083018583830111156201036557600080fd5b6201037283828462013e86565b50505092915050565b600062010389823562013e54565b905092915050565b60006201039f825162013e54565b905092915050565b600060208284031215620103ba57600080fd5b6000620103ca848285016200fd0d565b91505092915050565b60008060a08385031215620103e757600080fd5b6000620103f7858286016200fcf7565b92505060206201040a858286016200fdb2565b9150509250929050565b600080604083850312156201042857600080fd5b600062010438858286016200fd0d565b92505060206201044b8582860162010163565b9150509250929050565b600080600060c084860312156201046b57600080fd5b60006201047b868287016200fcf7565b93505060206201048e868287016201037b565b9250506040620104a1868287016200fdb2565b9150509250925092565b60008060008060e08587031215620104c257600080fd5b6000620104d2878288016200fcf7565b9450506020620104e5878288016201037b565b9350506040620104f8878288016201037b565b92505060606201050b878288016200fdb2565b91505092959194509250565b60008060008060008060c087890312156201053157600080fd5b60006201054189828a016200fcf7565b96505060206201055489828a016201037b565b95505060406201056789828a016201037b565b94505060606201057a89828a016201037b565b93505060806201058d89828a016201037b565b92505060a0620105a089828a016201037b565b91","50509295509295509295565b60008060008060e08587031215620105c457600080fd5b600085013567ffffffffffffffff811115620105df57600080fd5b620105ed878288016200fd23565b945050602085013567ffffffffffffffff8111156201060b57600080fd5b6201061987828801620100be565b935050604085013567ffffffffffffffff8111156201063757600080fd5b62010645878288016200ff40565b925050606062010658878288016200fdb2565b91505092959194509250565b6000608082840312156201067757600080fd5b600062010687848285016200fdb2565b91505092915050565b600060208284031215620106a357600080fd5b600082015167ffffffffffffffff811115620106be57600080fd5b620106cc848285016200ffbf565b91505092915050565b60008060008060e08587031215620106ec57600080fd5b600085013567ffffffffffffffff8111156201070757600080fd5b6201071587828801620100be565b945050602085013567ffffffffffffffff8111156201073357600080fd5b62010741878288016200fd23565b935050604085013567ffffffffffffffff8111156201075f57600080fd5b6201076d878288016200feb1565b925050606062010780878288016200fdb2565b91505092959194509250565b6000602082840312156201079f57600080fd5b6000620107af8482850162010163565b91505092915050565b60008060608385031215620107cc57600080fd5b6000620107dc8582860162010163565b9250506020620107ef858286016201003e565b9150509250929050565b6000602082840312156201080c57600080fd5b600082013567ffffffffffffffff8111156201082757600080fd5b6201083584828501620101ed565b91505092915050565b60008060a083850312156201085257600080fd5b600083013567ffffffffffffffff8111156201086d57600080fd5b6201087b85828601620101ed565b92505060206201088e858286016200fdb2565b9150509250929050565b60008060408385031215620108ac57600080fd5b600083013567ffffffffffffffff811115620108c757600080fd5b620108d585828601620101ed565b925050602083013567ffffffffffffffff811115620108f357600080fd5b6201090185828601620101ed565b9150509250929050565b600080600060c084860312156201092157600080fd5b600084013567ffffffffffffffff8111156201093c57600080fd5b6201094a86828701620101ed565b935050602084013567ffffffffffffffff8111156201096857600080fd5b6201097686828701620101ed565b925050604062010989868287016200fdb2565b9150509250925092565b600060208284031215620109a657600080fd5b6000620109b6848285016201037b565b91505092915050565b600060208284031215620109d257600080fd5b6000620109e28482850162010391565b91505092915050565b60008060408385031215620109ff57600080fd5b600062010a0f858286016201037b565b925050602062010a22858286016200fcf7565b9150509250929050565b600080600060c0848603121562010a4257600080fd5b600062010a52868287016201037b565b935050602062010a65868287016200fcf7565b925050604062010a78868287016200fdb2565b9150509250925092565b60008060008060e0858703121562010a9957600080fd5b600062010aa9878288016201037b565b945050602062010abc878288016200fcf7565b935050604085013567ffffffffffffffff81111562010ada57600080fd5b62010ae8878288016201031d565b925050606062010afb878288016200fdb2565b91505092959194509250565b60008060a0838503121562010b1b57600080fd5b600062010b2b858286016201037b565b925050602062010b3e858286016200fdb2565b9150509250929050565b6000806000806000610100868803121562010b6257600080fd5b600062010b72888289016201037b565b955050602086013567ffffffffffffffff81111562010b9057600080fd5b62010b9e888289016200fe32565b945050604086013567ffffffffffffffff81111562010bbc57600080fd5b62010bca888289016200fe32565b935050606062010bdd888289016200fcf7565b925050608062010bf0888289016200fdb2565b9150509295509295909350565b60008060008060e0858703121562010c1457600080fd5b600062010c24878288016201037b565b945050602062010c37878288016201037b565b935050604062010c4a878288016200fcf7565b925050606062010c5d878288016200fdb2565b91505092959194509250565b6000806000806000610100868803121562010c8357600080fd5b600062010c93888289016201037b565b955050602062010ca6888289016201037b565b945050604062010cb9888289016201014d565b935050606062010ccc888289016200fcf7565b925050608062010cdf888289016200fdb2565b9150509295509295909350565b6000806000806080858703121562010d0357600080fd5b600062010d13878288016201037b565b945050602062010d26878288016201037b565b935050604062010d39878288016201037b565b925050606062010d4c878288016200fcf7565b91505092959194509250565b62010d638162013dbd565b82525050565b600062010d768262013ce9565b80845260208401935062010d8a8362013c7a565b60005b8281101562010dc25762010da386835162010d58565b62010dae8262013d62565b915060208601955060018101905062010d8d565b50849250505092915050565b62010dd98162013cf4565b62010de48262013c87565b60005b8281101562010e1c5762010dfd85835162011053565b62010e088262013d6f565b915060208501945060018101905062010de7565b5050505050565b600062010e308262013cff565b8084526020840193508360208202850162010e4b8562013c91565b60005b8481101562010e8a57838303885262010e69838351620110a0565b925062010e768262013d7c565b915060208801975060018101905062010e4e565b508196508694505050505092915050565b600062010ea88262013d0a565b80845260208401935062010ebc8362013c9e565b60005b8281101562010ef45762010ed58683516201118c565b62010ee08262013d89565b915060208601955060018101905062010ebf565b50849250505092915050565b600062010f0d8262013d15565b8084526020840193508360208202850162010f288562013cab565b60005b8481101562010f6757838303885262010f46838351620111d9565b925062010f538262013d96565b915060208801975060018101905062010f2b565b508196508694505050505092915050565b600062010f858262013d20565b80845260208401935062010f998362013cb8565b60005b8281101562010fd15762010fb286835162012559565b62010fbd8262013da3565b915060208601955060018101905062010f9c565b50849250505092915050565b600062010fea8262013d2b565b80845260208401935062010ffe8362013cc5565b60005b8281101562011036576201101786835462012559565b620110228262013db0565b915060208601955060018101905062011001565b50849250505092915050565b6201104d8162013ddd565b82525050565b6201105e8162013de9565b82525050565b6000620110718262013d41565b8084526201108781602086016020860162013e95565b620110928162013ecb565b602085010191505092915050565b6000620110ad8262013d36565b808452620110c381602086016020860162013e95565b620110ce8162013ecb565b602085010191505092915050565b600081546001811660008114620110fc57600181146201111d5762011162565b607f600283041680865260ff19831660208701526040860193505062011162565b60028204808652602086019550620111358562013cd7565b60005b82811015620111595781548189015260018201915060208101905062011138565b80880195505050505b505092915050565b620111758162013e5e565b82525050565b620111868162013e72565b82525050565b620111978162013df3565b82525050565b6000620111aa8262013d57565b808452620111c081602086016020860162013e95565b620111cb8162013ecb565b602085010191505092915050565b6000620111e68262013d4c565b808452620111fc81602086016020860162013e95565b620112078162013ecb565b602085010191505092915050565b6000601a82527f466f7262696464656e2069737375654e6f6e46756e6769626c650000000000006020830152604082019050919050565b6000601d82527f466f7262696464656e206163636f756e74436f6e7461696e734e6f74650000006020830152604082019050919050565b6000603782527f466f7262696464656e206e6f6e46756e6769626c655175657279426f6f6b206260208301527f65636175736520796f75206172656e2774206f776e65720000000000000000006040830152606082019050919050565b6000603f82527f6e6f74657320686173206265656e20646566696e656420706c6561736520636860208301527f616e6765206e6f74654e6f507265666978206f72206e6f74654e6f53697a65006040830152606082019050919050565b6000601282527f466f7262696464656e20746561724e6f746500000000000000000000000000006020830152604082019050919050565b6000601982527f746865206163636f756e7420686173206265656e206f70656e000000000000006020830152604082019050919050565b6000602982527f72657175697265207374617274206c657373207468616e206163636f756e742060208301527f6e6f74652073697a6500000000000000000000000000000000000000000000006040830152606082019050919050565b6000601982527f466f7262696464656e206765744163636f756e744e6f746573000000000000006020830152604082019050919050565b6000602382527f417574683a6f6e6c79206163636f756e7420737461747573206973206e6f726d60208301527f616c2e00000000000000000000000000000000000000000000000000000000006040830152606082019050919050565b6000601682527f6e6f746520697320666f727a656e206f722074656172000000000000000000006020830152604082019050919050565b6000601d82527f7365744e6f6e46756e6769626c65507269636520466f7262696464656e0000006020830152604082019050919050565b6000601282527f6e6f7465206973206e6f7420666f727a656e00000000000000000000000000006020830152604082019050919050565b6000602a82527f6465736320627974657320617265206265747765656e203120616e642032353560208301527f20696e206c656e677468000000000000000000000000000000000000000000006040830152606082019050919050565b600060","1482527f746f206163636f756e74206e6f742065786973740000000000000000000000006020830152604082019050919050565b6000601082527f777269746520626f6f6b206661696c21000000000000000000000000000000006020830152604082019050919050565b6000602382527f546865206163636f756e74206973206e6f74206f776e65642074686973206e6f60208301527f74652100000000000000000000000000000000000000000000000000000000006040830152606082019050919050565b6000600b82527f656e61626c6542617463680000000000000000000000000000000000000000006020830152604082019050919050565b6000600e82527f61646420466f7262696464656e210000000000000000000000000000000000006020830152604082019050919050565b6000600c82527f7570646174654e6f74654e6f00000000000000000000000000000000000000006020830152604082019050919050565b6000601182527f706172616d73206e6f74207665726966790000000000000000000000000000006020830152604082019050919050565b6000601482527f7570646174654e6f746550726f706572746965730000000000000000000000006020830152604082019050919050565b6000601482527f466f7262696464656e20676574486f6c646572730000000000000000000000006020830152604082019050919050565b6000603282527f72657175697265203130203e206e6f74654e6f53697a65203e3020616e64206560208301527f787069726174696f6e44617465203e6e6f7700000000000000000000000000006040830152606082019050919050565b6000601982527f7265717569726520656666656374697665446174653e6e6f77000000000000006020830152604082019050919050565b6000600882527f7472616e736665720000000000000000000000000000000000000000000000006020830152604082019050919050565b6000602b82527f466f7262696464656e207472616e7366657220626563617573652066726f6d2060208301527f69736e2774206f776e65720000000000000000000000000000000000000000006040830152606082019050919050565b6000601b82527f466f7262696464656e206765744e6f746550726f7065727469657300000000006020830152604082019050919050565b6000601682527f466f7262696464656e20676574546561724e6f746573000000000000000000006020830152604082019050919050565b6000601082527f69737375654e6f6e46756e6769626c65000000000000000000000000000000006020830152604082019050919050565b6000600a82527f676574486f6c64657273000000000000000000000000000000000000000000006020830152604082019050919050565b6000601382527f72657175697265207374617274203c20656e64000000000000000000000000006020830152604082019050919050565b6000601582527f466f7262696464656e206f70656e4163636f756e7400000000000000000000006020830152604082019050919050565b6000601c82527f726571756972652065787069726174696f6e44617465203e206e6f77000000006020830152604082019050919050565b6000601582527f6e6f7465206973206e6f742065666665637469766500000000000000000000006020830152604082019050919050565b6000601c82527f726571756972652065666665637469766544617465203e3d206e6f77000000006020830152604082019050919050565b6000601b82527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006020830152604082019050919050565b6000602582527f7265717569726520656666656374697665446174653c2065787069726174696f60208301527f6e446174650000000000000000000000000000000000000000000000000000006040830152606082019050919050565b6000604182527f6c696d6974206e6f74207665726966792c6c696d69742073697a652073686f7560208301527f6c6420657175616c73203220616e64206c696d69745b305d3c6c696d69745b3160408301527f5d000000000000000000000000000000000000000000000000000000000000006060830152608082019050919050565b6000600e82527f67657420466f7262696464656e210000000000000000000000000000000000006020830152604082019050919050565b6000601682527f72657175697265206e6f74654e6f5072656669783e30000000000000000000006020830152604082019050919050565b6000600782527f616464426f6f6b000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000601182527f466f7262696464656e20616464426f6f6b0000000000000000000000000000006020830152604082019050919050565b6000600d82527f6765744e6f746544657461696c000000000000000000000000000000000000006020830152604082019050919050565b6000600882527f746561724e6f74650000000000000000000000000000000000000000000000006020830152604082019050919050565b6000601382527f7365744e6f6e46756e6769626c655072696365000000000000000000000000006020830152604082019050919050565b6000602182527f6f70657261746f72206f72206163636f756e74206973206e6f74206e6f726d6160208301527f6c000000000000000000000000000000000000000000000000000000000000006040830152606082019050919050565b6000603482527f62617463682063616e206e6f74206265206566666563746976652c626563617560208301527f736520656666656374697665446174653e6e6f770000000000000000000000006040830152606082019050919050565b6000601482527f466f7262696464656e20666f727a656e4e6f74650000000000000000000000006020830152604082019050919050565b6000601982527f466f7262696464656e207570646174654e6f74654261746368000000000000006020830152604082019050919050565b6000600a82527f667265657a654e6f7465000000000000000000000000000000000000000000006020830152604082019050919050565b6000601082527f6261746368206e6f7420766572696679000000000000000000000000000000006020830152604082019050919050565b6000601e82527f466f7262696464656e207570646174654e6f746550726f7065727469657300006020830152604082019050919050565b6000601d82527f466f7262696464656e206e6f6e46756e6769626c655472616e736665720000006020830152604082019050919050565b6000601b82527f66726f6d2f746f2061646472657373206e6f74207665726966792100000000006020830152604082019050919050565b6000600c82527f676574546561724e6f74657300000000000000000000000000000000000000006020830152604082019050919050565b6000601e82527f536166654d6174683a207375627472616374696f6e206f766572666c6f7700006020830152604082019050919050565b6000600e82527f73657420466f7262696464656e210000000000000000000000000000000000006020830152604082019050919050565b6000601282527f6e6f746520646f65736e277420657869737400000000000000000000000000006020830152604082019050919050565b6000600f82527f7570646174654e6f7465426174636800000000000000000000000000000000006020830152604082019050919050565b6000601582527f72657175697265203530303e3d616d6f756e743e3000000000000000000000006020830152604082019050919050565b6000601d82527f746865206163636f756e7420686173206e6f74206265656e206f70656e0000006020830152604082019050919050565b6000601682527f466f7262696464656e20756e667265657a654e6f7465000000000000000000006020830152604082019050919050565b6000601782527f466f7262626964656e206765744e6f746544657461696c0000000000000000006020830152604082019050919050565b6000601982527f6e65774e6f74654e6f20686173206265656e20697373756521000000000000006020830152604082019050919050565b6000600f82527f6765744163636f756e744e6f74657300000000000000000000000000000000006020830152604082019050919050565b6000601682527f66726f6d206163636f756e74206e6f74206578697374000000000000000000006020830152604082019050919050565b6000601682527f466f7262696464656e207570646174654e6f74654e6f000000000000000000006020830152604082019050919050565b6000601482527f626174636820646f65736e2774206578697374210000000000000000000000006020830152604082019050919050565b6000601382527f466f7262696464656e207175657279426f6f6b000000000000000000000000006020830152604082019050919050565b6000601282527f726571756972652064617465203e206e6f7700000000000000000000000000006020830152604082019050919050565b6000602782527f726571756972652065787069726174696f6e44617465203e202065666665637460208301527f69766544617465000000000000000000000000000000000000000000000000006040830152606082019050919050565b6000601382527f6e6f746520646f65736e277420657869737421000000000000000000000000006020830152604082019050919050565b6000601182527f696e7365727420466f7262696464656e210000000000000000000000000000006020830152604082019050919050565b6000600b82527f6f70656e4163636f756e740000000000000000000000000000000000000000006020830152604082019050919050565b6000601182527f6765744e6f746550726f706572746965730000000000000000000000000000006020830152604082019050919050565b6000601182527f72656d6f766520466f7262696464656e210000000000000000000000000000006020830152604082019050919050565b6000600982527f7175657279426f6f6b00000000000000000000000000000000000000000000006020830152604082019050919050565b6000601582527f466f7262696464656e20656e61626c65426174636800000000000000000000006020830152604082019050919050565b6000600c82527f756e667265657a654e6f746500000000000000000000000000000000000000006020830152604082019050919050565b6000601382527f6163636f756e74436f6e7461696e734e6f7465000000000000000000000000006020830152604082019050919050565b620125648162013dfd565b82525050565b620125758162013e07565b82525050565b600060208201905062012592600083018462010d58565b92915050565b600060808201905062","0125af600083018762010d58565b620125be602083018662010d58565b620125cd604083018562010d58565b8181036060830152620125e1818462011064565b905095945050505050565b600060a08201905062012603600083018862010d58565b62012612602083018762010d58565b8181036040830152620126268186620110a0565b905081810360608301526201263c818562011064565b90508181036080830152620126528184620110dc565b90509695505050505050565b60006101008201905062012676600083018762010d58565b62012685602083018662010d58565b8181036040830152620126988162011847565b90508181036060830152620126ae818562011064565b9050620126bf608083018462010dce565b95945050505050565b600061010082019050620126e0600083018762010d58565b620126ef602083018662010d58565b8181036040830152620127028162011cbd565b9050818103606083015262012718818562011064565b905062012729608083018462010dce565b95945050505050565b6000610100820190506201274a600083018762010d58565b62012759602083018662010d58565b81810360408301526201276c81620121c3565b9050818103606083015262012782818562011064565b905062012793608083018462010dce565b95945050505050565b6000604082019050620127b3600083018562010d58565b8181036020830152620127c7818462010fdd565b90509392505050565b600061010082019050620127e8600083018862010d58565b620127f760208301876201116a565b81810360408301526201280b818662011064565b9050818103606083015262012821818562011064565b905062012832608083018462010dce565b9695505050505050565b60006101008201905062012854600083018762010d58565b6201286360208301866201117b565b8181036040830152620128768162011669565b905081810360608301526201288c818562011064565b90506201289d608083018462010dce565b95945050505050565b600061010082019050620128be600083018762010d58565b620128cd60208301866201117b565b8181036040830152620128e081620116d7565b90508181036060830152620128f6818562011064565b905062012907608083018462010dce565b95945050505050565b60006101008201905062012928600083018762010d58565b6201293760208301866201117b565b81810360408301526201294a8162011745565b9050818103606083015262012960818562011064565b905062012971608083018462010dce565b95945050505050565b60006101008201905062012992600083018762010d58565b620129a160208301866201117b565b8181036040830152620129b48162011949565b90508181036060830152620129ca818562011064565b9050620129db608083018462010dce565b95945050505050565b600061010082019050620129fc600083018762010d58565b62012a0b60208301866201117b565b818103604083015262012a1e8162011980565b9050818103606083015262012a34818562011064565b905062012a45608083018462010dce565b95945050505050565b60006101008201905062012a66600083018762010d58565b62012a7560208301866201117b565b818103604083015262012a888162011c4f565b9050818103606083015262012a9e818562011064565b905062012aaf608083018462010dce565b95945050505050565b60006101008201905062012ad0600083018762010d58565b62012adf60208301866201117b565b818103604083015262012af28162011cf4565b9050818103606083015262012b08818562011064565b905062012b19608083018462010dce565b95945050505050565b60006101008201905062012b3a600083018762010d58565b62012b4960208301866201117b565b818103604083015262012b5c8162011d2b565b9050818103606083015262012b72818562011064565b905062012b83608083018462010dce565b95945050505050565b60006101008201905062012ba4600083018762010d58565b62012bb360208301866201117b565b818103604083015262012bc68162011e8a565b9050818103606083015262012bdc818562011064565b905062012bed608083018462010dce565b95945050505050565b60006101008201905062012c0e600083018762010d58565b62012c1d60208301866201117b565b818103604083015262012c308162011f9d565b9050818103606083015262012c46818562011064565b905062012c57608083018462010dce565b95945050505050565b60006101008201905062012c78600083018762010d58565b62012c8760208301866201117b565b818103604083015262012c9a8162012079565b9050818103606083015262012cb0818562011064565b905062012cc1608083018462010dce565b95945050505050565b60006101008201905062012ce2600083018762010d58565b62012cf160208301866201117b565b818103604083015262012d0481620123d8565b9050818103606083015262012d1a818562011064565b905062012d2b608083018462010dce565b95945050505050565b60006101008201905062012d4c600083018762010d58565b62012d5b60208301866201117b565b818103604083015262012d6e816201240f565b9050818103606083015262012d84818562011064565b905062012d95608083018462010dce565b95945050505050565b60006101008201905062012db6600083018762010d58565b62012dc560208301866201117b565b818103604083015262012dd8816201247d565b9050818103606083015262012dee818562011064565b905062012dff608083018462010dce565b95945050505050565b60006101008201905062012e20600083018762010d58565b62012e2f60208301866201117b565b818103604083015262012e4281620124eb565b9050818103606083015262012e58818562011064565b905062012e69608083018462010dce565b95945050505050565b60006101008201905062012e8a600083018762010d58565b62012e9960208301866201117b565b818103604083015262012eac8162012522565b9050818103606083015262012ec2818562011064565b905062012ed3608083018462010dce565b95945050505050565b6000602082019050818103600083015262012ef8818462010d69565b905092915050565b6000608082019050818103600083015262012f1c818762010d69565b9050818103602083015262012f32818662010f78565b9050818103604083015262012f48818562010f78565b905062012f5960608301846201256a565b95945050505050565b6000606082019050818103600083015262012f7e818662010d69565b905062012f8f602083018562012559565b818103604083015262012fa3818462010f00565b9050949350505050565b6000604082019050818103600083015262012fc9818562010e23565b9050818103602083015262012fdf818462010e23565b90509392505050565b6000602082019050818103600083015262013004818462010f00565b905092915050565b6000602082019050818103600083015262013028818462010f78565b905092915050565b600060608201905081810360008301526201304c818662010f78565b9050818103602083015262013062818562010d69565b9050818103604083015262013078818462010e9b565b9050949350505050565b600060208201905062013099600083018462011042565b92915050565b6000604082019050620130b6600083018562011042565b8181036020830152620130ca818462010f78565b90509392505050565b60006020820190508181036000830152620130ef8184620110a0565b905092915050565b6000602082019050818103600083015262013113818462011064565b905092915050565b60006060820190506201313260008301866201117b565b62013141602083018562010d58565b62013150604083018462011042565b949350505050565b600060208201905081810360008301526201317481846201119d565b905092915050565b60006020820190508181036000830152620131978162011215565b9050919050565b60006020820190508181036000830152620131b9816201124c565b9050919050565b60006020820190508181036000830152620131db8162011283565b9050919050565b60006020820190508181036000830152620131fd81620112e0565b9050919050565b600060208201905081810360008301526201321f816201133d565b9050919050565b60006020820190508181036000830152620132418162011374565b9050919050565b600060208201905081810360008301526201326381620113ab565b9050919050565b60006020820190508181036000830152620132858162011408565b9050919050565b60006020820190508181036000830152620132a7816201143f565b9050919050565b60006020820190508181036000830152620132c9816201149c565b9050919050565b60006020820190508181036000830152620132eb81620114d3565b9050919050565b600060208201905081810360008301526201330d816201150a565b9050919050565b600060208201905081810360008301526201332f8162011541565b9050919050565b6000602082019050818103600083015262013351816201159e565b9050919050565b600060208201905081810360008301526201337381620115d5565b9050919050565b6000602082019050818103600083015262013395816201160c565b9050919050565b60006020820190508181036000830152620133b781620116a0565b9050919050565b60006020820190508181036000830152620133d9816201170e565b9050919050565b60006020820190508181036000830152620133fb816201177c565b9050919050565b600060208201905081810360008301526201341d81620117b3565b9050919050565b600060208201905081810360008301526201343f8162011810565b9050919050565b6000602082019050818103600083015262013461816201187e565b9050919050565b600060208201905081810360008301526201348381620118db565b9050919050565b60006020820190508181036000830152620134a58162011912565b9050919050565b60006020820190508181036000830152620134c781620119b7565b9050919050565b60006020820190508181036000830152620134e981620119ee565b9050919050565b600060208201905081810360008301526201350b8162011a25565b9050919050565b600060208201905081810360008301526201352d8162011a5c565b9050919050565b600060208201905081810360008301526201354f8162011a93565b9050919050565b60006020820190508181036000830152620135718162011aca565b9050919050565b60006020820190508181036000830152620135938162011b01565b9050919050565b60006020820190","508181036000830152620135b58162011b5e565b9050919050565b60006020820190508181036000830152620135d78162011be1565b9050919050565b60006020820190508181036000830152620135f98162011c18565b9050919050565b600060208201905081810360008301526201361b8162011c86565b9050919050565b600060208201905081810360008301526201363d8162011d62565b9050919050565b600060208201905081810360008301526201365f8162011dbf565b9050919050565b60006020820190508181036000830152620136818162011e1c565b9050919050565b60006020820190508181036000830152620136a38162011e53565b9050919050565b60006020820190508181036000830152620136c58162011ec1565b9050919050565b60006020820190508181036000830152620136e78162011ef8565b9050919050565b60006020820190508181036000830152620137098162011f2f565b9050919050565b600060208201905081810360008301526201372b8162011f66565b9050919050565b600060208201905081810360008301526201374d8162011fd4565b9050919050565b600060208201905081810360008301526201376f816201200b565b9050919050565b60006020820190508181036000830152620137918162012042565b9050919050565b60006020820190508181036000830152620137b381620120b0565b9050919050565b60006020820190508181036000830152620137d581620120e7565b9050919050565b60006020820190508181036000830152620137f7816201211e565b9050919050565b60006020820190508181036000830152620138198162012155565b9050919050565b600060208201905081810360008301526201383b816201218c565b9050919050565b600060208201905081810360008301526201385d81620121fa565b9050919050565b600060208201905081810360008301526201387f8162012231565b9050919050565b60006020820190508181036000830152620138a18162012268565b9050919050565b60006020820190508181036000830152620138c3816201229f565b9050919050565b60006020820190508181036000830152620138e581620122d6565b9050919050565b6000602082019050818103600083015262013907816201230d565b9050919050565b6000602082019050818103600083015262013929816201236a565b9050919050565b600060208201905081810360008301526201394b81620123a1565b9050919050565b600060208201905081810360008301526201396d8162012446565b9050919050565b600060208201905081810360008301526201398f81620124b4565b9050919050565b6000602082019050620139ad600083018462012559565b92915050565b6000606082019050620139ca600083018662012559565b8181036020830152620139de818562010f78565b90508181036040830152620139f4818462010f78565b9050949350505050565b600060408201905062013a15600083018562012559565b62013a24602083018462012559565b9392505050565b600060608201905062013a42600083018662012559565b62013a51602083018562012559565b62013a6060408301846201256a565b949350505050565b600060208201905062013a7f60008301846201256a565b92915050565b6000604051905081810181811067ffffffffffffffff8211171562013aa957600080fd5b8060405250919050565b600067ffffffffffffffff82111562013acb57600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111562013af457600080fd5b602082029050919050565b600067ffffffffffffffff82111562013b1757600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111562013b4057600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111562013b6957600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111562013b9257600080fd5b602082029050919050565b600067ffffffffffffffff82111562013bb557600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111562013bde57600080fd5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff82111562013c0b57600080fd5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff82111562013c3857600080fd5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff82111562013c6557600080fd5b601f19601f8301169050602081019050919050565b6000602082019050919050565b6000819050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b60008160005260206000209050919050565b60008160005260206000209050919050565b600081519050919050565b600060049050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081549050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000600182019050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60008115159050919050565b6000819050919050565b6000819050919050565b6000819050919050565b600060ff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60008115159050919050565b6000819050919050565b6000819050919050565b6000819050919050565b600062013e6b8262013dbd565b9050919050565b600062013e7f8262013dbd565b9050919050565b82818337600083830152505050565b60005b8381101562013eb557808201518184015260208101905062013e98565b8381111562013ec5576000848401525b50505050565b6000601f19601f83011690509190505600a265627a7a7230582083ab4f24c7bedfe08a25f45db1d18375de62a63abe1d2ad01e9a7d1052c7147b6c6578706572696d656e74616cf50037608060405234801561001057600080fd5b50600160008190555060e9806100276000396000f3006080604052600436106049576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063299f7f9d14604e578063b4e5591e146076575b600080fd5b348015605957600080fd5b506060609e565b6040518082815260200191505060405180910390f35b348015608157600080fd5b50608860b4565b6040518082815260200191505060405180910390f35b6000600160005401600081905550600054905090565b600080549050905600a165627a7a72305820723ead1e16a09964278301c9daba8e7d7c838b5ffe836a9bfe35f931e33ee0eb002960806040523480156200001157600080fd5b50604051620057e2380380620057e2833981018060405262000037919081019062000395565b826000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260019080600181540180825580915050906001820390600052602060002001600090919290919091505550611001600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600c9080519060200190620000ff9291906200025c565b50600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c92a7801600c6040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200017a919062000552565b602060405180830381600087803b1580156200019557600080fd5b505af1158015620001aa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620001d0919081019062000404565b5080600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050506200066d565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200029f57805160ff1916838001178555620002d0565b82800160010185558215620002d0579182015b82811115620002cf578251825591602001919060010190620002b2565b5b509050620002df9190620002e3565b5090565b6200030891905b8082111562000304576000816000905550600101620002ea565b5090565b90565b60006200031982516200060d565b905092915050565b60006200032f82516200062d565b905092915050565b600082601f83011215156200034b57600080fd5b8151620003626200035c82620005ce565b620005a0565b915080825260208301602083018583830111156200037f57600080fd5b6200038c83828462000637565b50505092915050565b600080600060608486031215620003ab57600080fd5b6000620003bb868287016200030b565b935050602084015167ffffffffffffffff811115620003d957600080fd5b620003e78682870162000337565b9250506040620003fa868287016200030b565b9150509250925092565b6000602082840312156200041757600080fd5b6000620004278482850162000321565b91505092915050565b6000815460018116600081146200045057600181146200047157620004b6565b607f600283041680865260ff198316602087015260408601935050620004b6565b600282048086526020860195506200048985620005fb565b60005b82811015620004ad578154818901526001820191506020810190506200048c565b80880195505050505b505092915050565b6000602e82527f7465726d5f6e6f2c7365712c66726f6d2c746f2c6e6f746549642c617373657460208301527f2c6f70657261746f722c646573630000000000000000000000000000000000006040830152606082019050919050565b6000600782527f626f6f6b5f6e6f000000000000000000000000000000000000000000000000006020830152604082019050919050565b600060608201905081810360008301526200056e818462000430565b90508181036020830152620005","83816200051b565b905081810360408301526200059881620004be565b905092915050565b6000604051905081810181811067ffffffffffffffff82111715620005c457600080fd5b8060405250919050565b600067ffffffffffffffff821115620005e657600080fd5b601f19601f8301169050602081019050919050565b60008160005260206000209050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b83811015620006575780820151818401526020810190506200063a565b8381111562000667576000848401525b50505050565b615165806200067d6000396000f30060806040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806311567c421461007257806345be589e1461009d578063b32cf81b146100c8578063c19f641414610105578063d121179914610143575b600080fd5b34801561007e57600080fd5b50610087610181565b60405161009491906148e1565b60405180910390f35b3480156100a957600080fd5b506100b2610189565b6040516100bf9190614dff565b60405180910390f35b3480156100d457600080fd5b506100ef60048036036100ea9190810190614102565b6101e6565b6040516100fc919061497f565b60405180910390f35b34801561011157600080fd5b5061012c60048036036101279190810190614096565b61097e565b60405161013a92919061494f565b60405180910390f35b34801561014f57600080fd5b5061016a60048036036101659190810190614017565b611149565b6040516101789291906149a1565b60405180910390f35b600030905090565b60006002600160028054905001908060018154018082558091505090600182039060005260206000200160009091929091909150555060026001600280549050038154811015156101d657fe5b9060005260206000200154905090565b60606000606060006060600080606060008b511180610206575060008a51115b1515610247576040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040161023e90614d6a565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166359a48b65600c6040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016102bf9190614a6e565b602060405180830381600087803b1580156102d957600080fd5b505af11580156102ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506103119190810190614214565b965061031d8b8b61097e565b80965081975050508673ffffffffffffffffffffffffffffffffffffffff1663c74f8caf6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561038957600080fd5b505af115801561039d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506103c19190810190614199565b92506000915060008b511180156103f1575060008b60008151811015156103e457fe5b9060200190602002015114155b1561049e578273ffffffffffffffffffffffffffffffffffffffff1663ae763db56104338d600081518110151561042457fe5b90602001906020020151611c1b565b6040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161046b9190614d35565b600060405180830381600087803b15801561048557600080fd5b505af1158015610499573d6000803e3d6000fd5b505050505b60018b511180156104c8575060008b60018151811015156104bb57fe5b9060200190602002015114155b15610575578273ffffffffffffffffffffffffffffffffffffffff1663ae763db561050a8d60018151811015156104fb57fe5b90602001906020020151611c1b565b6040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016105429190614b93565b600060405180830381600087803b15801561055c57600080fd5b505af1158015610570573d6000803e3d6000fd5b505050505b60028b5111801561059f575060008b600281518110151561059257fe5b9060200190602002015114155b1561064c578273ffffffffffffffffffffffffffffffffffffffff1663ae763db56105e18d60028151811015156105d257fe5b90602001906020020151611c1b565b6040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016106199190614c3d565b600060405180830381600087803b15801561063357600080fd5b505af1158015610647573d6000803e3d6000fd5b505050505b60008a511180156106a25750600073ffffffffffffffffffffffffffffffffffffffff168a600081518110151561067f57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1614155b15610765578273ffffffffffffffffffffffffffffffffffffffff1663ae763db56106fa8c60008151811015156106d557fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff16611d72565b6040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016107329190614be8565b600060405180830381600087803b15801561074c57600080fd5b505af1158015610760573d6000803e3d6000fd5b505050505b60018a511180156107bb5750600073ffffffffffffffffffffffffffffffffffffffff168a600181518110151561079857fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1614155b1561087e578273ffffffffffffffffffffffffffffffffffffffff1663ae763db56108138c60018151811015156107ee57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff16611d72565b6040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161084b9190614dca565b600060405180830381600087803b15801561086557600080fd5b505af1158015610879573d6000803e3d6000fd5b505050505b8273ffffffffffffffffffffffffffffffffffffffff1663324927378a60008151811015156108a957fe5b906020019060200201518b60018151811015156108c257fe5b906020019060200201516040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016109059291906149e5565b600060405180830381600087803b15801561091f57600080fd5b505af1158015610933573d6000803e3d6000fd5b50505050610942868685611ee6565b80935081925050506000815111801561095b5750600082135b1561096d5761096a81836121ee565b93505b839750505050505050509392505050565b6060600060606000806000806000806002805490506040519080825280602002602001820160405280156109c15781602001602082028038833980820191505090505b50965060018b511180156109ee575060008b60018151811015156109e157fe5b9060200190602002015114155b15610a7c576000600460008d6001815181101515610a0857fe5b90602001906020020151815260200190815260200160002054141515610a7b576001876001600460008f6001815181101515610a4057fe5b9060200190602002015181526020019081526020016000205403815181101515610a6657fe5b90602001906020020190151590811515815250505b5b60008b51118015610aa6575060008b6000815181101515610a9957fe5b9060200190602002015114155b15610bc157600095505b600360008c6000815181101515610ac357fe5b90602001906020020151815260200190815260200160002080549050861015610bc057866001600360008e6000815181101515610afc57fe5b90602001906020020151815260200190815260200160002088815481101515610b2157fe5b906000526020600020015403815181101515610b3957fe5b906020019060200201511515610bb3576001876001600360008f6000815181101515610b6157fe5b90602001906020020151815260200190815260200160002089815481101515610b8657fe5b906000526020600020015403815181101515610b9e57fe5b90602001906020020190151590811515815250505b8580600101965050610ab0565b5b60028b51118015610beb575060008b6002815181101515610bde57fe5b9060200190602002015114155b15610d0657600094505b600760008c6002815181101515610c0857fe5b90602001906020020151815260200190815260200160002080549050851015610d0557866001600760008e6002815181101515610c4157fe5b90602001906020020151815260200190815260200160002087815481101515610c6657fe5b906000526020600020015403815181101515610c7e57fe5b906020019060200201511515610cf8576001876001600760008f6002815181101515610ca657fe5b90602001906020020151815260200190815260200160002088815481101515610ccb57fe5b906000526020600020015403815181101515610ce357fe5b90602001906020020190151590811515815250505b8480600101955050610bf5565b5b60008a51118015610d5c5750600073ffffffffffffffffffffffffffffffffffffffff168a6000815181101515610d3957fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1614155b15610efb57600093505b600560008b6000815181101515610d7957fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050841015610efa57866001600560008d6000815181101515610dde57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002086815481101515610e2f57fe5b906000526020600020015403815181101515610e4757fe5b906020019060200201511515610eed576001876001600560008e6000815181101515610e6f57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002087815481101515610ec057fe5b906000526020600020015403815181101515610ed857fe5b90602001906020020190151590811515815250505b8380600101945050610d66565b5b60018a","51118015610f515750600073ffffffffffffffffffffffffffffffffffffffff168a6001815181101515610f2e57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1614155b156110f057600092505b600660008b6001815181101515610f6e57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490508310156110ef57866001600660008d6001815181101515610fd357fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208581548110151561102457fe5b90600052602060002001540381518110151561103c57fe5b9060200190602002015115156110e2576001876001600660008e600181518110151561106457fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020868154811015156110b557fe5b9060005260206000200154038151811015156110cd57fe5b90602001906020020190151590811515815250505b8280600101935050610f5b565b5b60009150600090505b865181101561113557868181518110151561111057fe5b90602001906020020151156111285781806001019250505b80806001019150506110f9565b868298509850505050505050509250929050565b6000611153613c53565b60006060600080600080611165613c53565b60048c51101515156111ac576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016111a390614d6a565b60405180910390fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631bf727356040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b15801561123157600080fd5b505af1158015611245573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525061126e91908101906142d0565b80975081985050506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bd332ffe6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156112fb57600080fd5b505af115801561130f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061133391908101906142a7565b945061134287868e8e8e612be1565b9350600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166359a48b65600c6040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016113bc9190614a6e565b602060405180830381600087803b1580156113d657600080fd5b505af11580156113ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061140e9190810190614214565b92508273ffffffffffffffffffffffffffffffffffffffff16634c6f30c0611456600260016002805490500381548110151561144657fe5b9060005260206000200154611c1b565b866040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401611490929190614a3e565b602060405180830381600087803b1580156114aa57600080fd5b505af11580156114be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114e2919081019061423d565b91507f246d61ff6a7af5762a067fba9052b5d9f4c893cf3b8358ee15d4b0e9300068f68c8c8c8560405161151994939291906148fc565b60405180910390a1600860008881526020019081526020016000206000600260016002805490500381548110151561154d57fe5b9060005260206000200154815260200190815260200160002060009054906101000a900460ff161515611637576003600088815260200190815260200160002060026001600280549050038154811015156115a457fe5b906000526020600020015490806001815401808255809150509060018203906000526020600020016000909192909190915055506001600860008981526020019081526020016000206000600260016002805490500381548110151561160657fe5b9060005260206000200154815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600260016002805490500381548110151561164e57fe5b90600052602060002001546004600087815260200190815260200160002081905550600960008d600281518110151561168357fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060026001600280549050038154811015156116e057fe5b9060005260206000200154815260200190815260200160002060009054906101000a900460ff1615801561175957508b600281518110151561171e57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff1614155b156118a357600560008d600281518110151561177157fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060026001600280549050038154811015156117cc57fe5b906000526020600020015490806001815401808255809150509060018203906000526020600020016000909192909190915055506001600960008e600281518110151561181557fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600260016002805490500381548110151561187257fe5b9060005260206000200154815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600a60008d60038151811015156118b657fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600260016002805490500381548110151561191357fe5b9060005260206000200154815260200190815260200160002060009054906101000a900460ff1615801561198c57508b600381518110151561195157fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff1614155b15611ad657600660008d60038151811015156119a457fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060026001600280549050038154811015156119ff57fe5b906000526020600020015490806001815401808255809150509060018203906000526020600020016000909192909190915055506001600a60008e6003815181101515611a4857fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006002600160028054905003815481101515611aa557fe5b9060005260206000200154815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600b60008c815260200190815260200160002060006002600160028054905003815481101515611b0257fe5b9060005260206000200154815260200190815260200160002060009054906101000a900460ff161515611bec57600760008c81526020019081526020016000206002600160028054905003815481101515611b5957fe5b906000526020600020015490806001815401808255809150509060018203906000526020600020016000909192909190915055506001600b60008d815260200190815260200160002060006002600160028054905003815481101515611bbb57fe5b9060005260206000200154815260200190815260200160002060006101000a81548160ff0219169083151502179055505b604080519081016040528088815260200186815250905060018214819850985050505050505050935093915050565b60606000806060600080861415611c69576040805190810160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509450611d69565b8593505b600084141515611c93578280600101935050600a84811515611c8b57fe5b049350611c6d565b826040519080825280601f01601f191660200182016040528015611cc65781602001602082028038833980820191505090505b5091506001830390505b600086141515611d6557600a86811515611ce657fe5b066030017f010000000000000000000000000000000000000000000000000000000000000002828280600190039350815181101515611d2157fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a86811515611d5d57fe5b049550611cd0565b8194505b50505050919050565b60606000806000606060008673ffffffffffffffffffffffffffffffffffffffff1694506000851415611ddc576040805190810160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509550611edc565b8493505b600084141515611e06578280600101935050600a84811515611dfe57fe5b049350611de0565b826040519080825280601f01601f191660200182016040528015611e395781602001602082028038833980820191505090505b5091506001830390505b600085141515611ed857600a85811515611e5957fe5b066030017f010000000000000000000000000000000000000000000000000000000000000002828280600190039350815181101515611e9457fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85811515611ed057fe5b049450611e43565b8195505b5050505050919050565b606060008060006060600080600060016000905490610100","0a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166359a48b65600c6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401611f6c9190614a6e565b602060405180830381600087803b158015611f8657600080fd5b505af1158015611f9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611fbe9190810190614214565b95506000945089604051908082528060200260200182016040528015611ff35781602001602082028038833980820191505090505b50935060009250600091505b8a518210156121da578a8281518110151561201657fe5b90602001906020020151156121cd578573ffffffffffffffffffffffffffffffffffffffff1663d8ac595761204d60018501611c1b565b8b6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401612087929190614a0e565b602060405180830381600087803b1580156120a157600080fd5b505af11580156120b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506120d991908101906141c2565b90508073ffffffffffffffffffffffffffffffffffffffff1663d3e9af5a6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561213f57600080fd5b505af1158015612153573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612177919081019061423d565b8501945080848480600101955081518110151561219057fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505b8180600101925050611fff565b838597509750505050505050935093915050565b606080600080600080600060606008890260405190808252806020026020018201604052801561223257816020015b606081526020019060019003908161221d5790505b509650600095505b8951861015612bd157898681518110151561225157fe5b90602001906020020151945060009350600092505b8473ffffffffffffffffffffffffffffffffffffffff1663d3e9af5a6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156122ca57600080fd5b505af11580156122de573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612302919081019061423d565b831215612bc4578473ffffffffffffffffffffffffffffffffffffffff16633dd2b614846040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161235e91906149ca565b602060405180830381600087803b15801561237857600080fd5b505af115801561238c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506123b091908101906141eb565b9150600093506125b78273ffffffffffffffffffffffffffffffffffffffff16639bca41e86040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161240c90614bc8565b600060405180830381600087803b15801561242657600080fd5b505af115801561243a573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506124639190810190614266565b8373ffffffffffffffffffffffffffffffffffffffff16639bca41e86040518163ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016124b690614daa565b600060405180830381600087803b1580156124d057600080fd5b505af11580156124e4573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525061250d9190810190614266565b8473ffffffffffffffffffffffffffffffffffffffff166307afbf3a6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161256090614b05565b602060405180830381600087803b15801561257a57600080fd5b505af115801561258e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506125b29190810190613fee565b613312565b9050600381511415156125ff576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016125f690614a90565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16639bca41e86040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161265290614d15565b600060405180830381600087803b15801561266c57600080fd5b505af1158015612680573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506126a99190810190614266565b878585600802018151811015156126bc57fe5b906020019060200201819052508173ffffffffffffffffffffffffffffffffffffffff16639bca41e86040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161271c90614b73565b600060405180830381600087803b15801561273657600080fd5b505af115801561274a573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506127739190810190614266565b8785600101955085856008020181518110151561278c57fe5b906020019060200201819052508060008151811015156127a857fe5b90602001906020020151878560010195508585600802018151811015156127cb57fe5b906020019060200201819052508060018151811015156127e757fe5b906020019060200201518785600101955085856008020181518110151561280a57fe5b90602001906020020181905250612999600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633889c9e461290a8573ffffffffffffffffffffffffffffffffffffffff16639bca41e86040518163ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016128ae90614c1d565b600060405180830381600087803b1580156128c857600080fd5b505af11580156128dc573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506129059190810190614266565b6138b1565b6040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016129429190614dff565b602060405180830381600087803b15801561295c57600080fd5b505af1158015612970573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061299491908101906142a7565b611c1b565b878560010195508585600802018151811015156129b257fe5b906020019060200201819052508173ffffffffffffffffffffffffffffffffffffffff16639bca41e86040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401612a1290614ab0565b600060405180830381600087803b158015612a2c57600080fd5b505af1158015612a40573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250612a699190810190614266565b87856001019550858560080201815181101515612a8257fe5b90602001906020020181905250612b528273ffffffffffffffffffffffffffffffffffffffff166307afbf3a6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401612ae590614c72565b602060405180830381600087803b158015612aff57600080fd5b505af1158015612b13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612b379190810190613fee565b73ffffffffffffffffffffffffffffffffffffffff16611d72565b87856001019550858560080201815181101515612b6b57fe5b90602001906020020181905250806002815181101515612b8757fe5b9060200190602002015187856001019550858560080201815181101515612baa57fe5b906020019060200201819052508280600101935050612266565b858060010196505061223a565b8697505050505050505092915050565b6000806000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166359a48b65600c6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401612c5e9190614a6e565b602060405180830381600087803b158015612c7857600080fd5b505af1158015612c8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612cb09190810190614214565b91508173ffffffffffffffffffffffffffffffffffffffff16635887ab246040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015612d1657600080fd5b505af1158015612d2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612d4e91908101906141eb565b90508073ffffffffffffffffffffffffffffffffffffffff16631a391cb4612d966002600160028054905003815481101515612d8657fe5b9060005260206000200154611c1b565b6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401612dce9190614ce0565b600060405180830381600087803b158015612de857600080fd5b505af1158015612dfc573d6000803e3d6000fd5b505050508073ffffffffffffffffffffffffffffffffffffffff16631a391cb4612e2589611c1b565b6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401612e5d9190614b93565b600060405180830381600087803b158015612e7757600080fd5b505af1158015612e8b573d6000803e3d6000fd5b505050508073ffffffffffffffffffffffffffffffffffffffff16631a391cb4612eb48a611c1b565b6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401612eec9190614d35565b600060405180830381600087803b15801561","2f0657600080fd5b505af1158015612f1a573d6000803e3d6000fd5b505050508073ffffffffffffffffffffffffffffffffffffffff16631a391cb4612f71886002815181101515612f4c57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff16611d72565b6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401612fa99190614be8565b600060405180830381600087803b158015612fc357600080fd5b505af1158015612fd7573d6000803e3d6000fd5b505050508073ffffffffffffffffffffffffffffffffffffffff16631a391cb461302e88600381518110151561300957fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff16611d72565b6040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016130669190614dca565b600060405180830381600087803b15801561308057600080fd5b505af1158015613094573d6000803e3d6000fd5b505050508073ffffffffffffffffffffffffffffffffffffffff1663517c4dd98760018151811015156130c357fe5b906020019060200201516040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016131059190614c92565b600060405180830381600087803b15801561311f57600080fd5b505af1158015613133573d6000803e3d6000fd5b505050508073ffffffffffffffffffffffffffffffffffffffff16631a391cb461315c87611c1b565b6040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016131949190614c3d565b600060405180830381600087803b1580156131ae57600080fd5b505af11580156131c2573d6000803e3d6000fd5b505050508073ffffffffffffffffffffffffffffffffffffffff1663517c4dd98760008151811015156131f157fe5b906020019060200201516040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016132339190614b25565b600060405180830381600087803b15801561324d57600080fd5b505af1158015613261573d6000803e3d6000fd5b505050508073ffffffffffffffffffffffffffffffffffffffff16631a391cb485600081518110151561329057fe5b906020019060200201516040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016132d29190614ad0565b600060405180830381600087803b1580156132ec57600080fd5b505af1158015613300573d6000803e3d6000fd5b50505050809250505095945050505050565b606080600080600360405190808252806020026020018201604052801561334d57816020015b60608152602001906001900390816133385790505b50925060008751118015613396575061336587613a82565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff1614155b1561352057600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c4dcade66133e289613a82565b6040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161341a91906148e1565b602060405180830381600087803b15801561343457600080fd5b505af1158015613448573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061346c9190810190613fee565b90508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff16141515156134e0576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016134d790614cc0565b60405180910390fd5b6134ff8173ffffffffffffffffffffffffffffffffffffffff16611d72565b83600081518110151561350e57fe5b9060200190602002018190525061353e565b8683600081518110151561353057fe5b906020019060200201819052505b60008651118015613584575061355386613a82565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff1614155b1561370e57600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c4dcade66135d088613a82565b6040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161360891906148e1565b602060405180830381600087803b15801561362257600080fd5b505af1158015613636573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061365a9190810190613fee565b90508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff16141515156136ce576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016136c590614b53565b60405180910390fd5b6136ed8173ffffffffffffffffffffffffffffffffffffffff16611d72565b8360018151811015156136fc57fe5b9060200190602002018190525061372c565b8583600181518110151561371e57fe5b906020019060200201819052505b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c4dcade6866040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016137a391906148e1565b602060405180830381600087803b1580156137bd57600080fd5b505af11580156137d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506137f59190810190613fee565b90508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff1614151515613869576040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040161386090614d8a565b60405180910390fd5b6138888173ffffffffffffffffffffffffffffffffffffffff16611d72565b83600281518110151561389757fe5b906020019060200201819052508293505050509392505050565b6000606060008084925060009150600090505b8251811015613a7757603083828151811015156138dd57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027f0100000000000000000000000000000000000000000000000000000000000000900460ff16101580156139db57506039838281518110151561396757fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027f0100000000000000000000000000000000000000000000000000000000000000900460ff1611155b15613a6a57603083828151811015156139f057fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027f010000000000000000000000000000000000000000000000000000000000000090040360ff16600a83020191505b80806001019150506138c4565b819350505050919050565b6000606060008084925060009150600090505b8251811015613c485760308382815181101515613aae57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027f0100000000000000000000000000000000000000000000000000000000000000900460ff1610158015613bac575060398382815181101515613b3857fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027f0100000000000000000000000000000000000000000000000000000000000000900460ff1611155b15613c3b5760308382815181101515613bc157fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027f010000000000000000000000000000000000000000000000000000000000000090040360ff16600a83020191505b8080600101915050613a95565b819350505050919050565b6040805190810160405280600290602082028038833980820191505090505090565b6000613c818235615038565b905092915050565b6000613c958251615038565b905092915050565b600082601f8301121515613cb057600080fd5b8135613cc3613cbe82614e47565b614e1a565b91508181835260208401935060208101905083856020840282011115613ce857600080fd5b60005b83811015613d185781613cfe8882613c75565b845260208401935060208301925050600181019050613ceb565b5050505092915050565b600082601f8301121515613d3557600080fd5b8135613d48613d4382614e6f565b614e1a565b91508181835260208401935060208101905083856020840282011115613d6d57600080fd5b60005b83811015613d9d5781613d838882613ef2565b845260208401935060208301925050600181019050613d70565b5050505092915050565b600082601f8301121515613dba57600080fd5b8135613dcd613dc882614e97565b614e1a565b9150818183526020840193506020810190508360005b83811015613e135781358601613df98882613f1a565b845260208401935060208301925050600181019050613de3565b5050505092915050565b600082601f8301121515613e3057600080fd5b8135613e43613e3e82614ebf565b614e1a565b91508181835260208401935060208101905083856020840282011115613e6857600080fd5b60005b83811015613e985781613e7e8882613fc6565b845260208401935060208301925050600181019050613e6b565b5050505092915050565b6000613eae8251615058565b905092915050565b6000613ec2825161506a565b905092915050565b6000613ed6825161507c565b905092915050565b6000613eea825161508e565b905092915050565b6000613efe82356150a0565b","905092915050565b6000613f1282516150a0565b905092915050565b600082601f8301121515613f2d57600080fd5b8135613f40613f3b82614ee7565b614e1a565b91508082526020830160208301858383011115613f5c57600080fd5b613f678382846150d8565b50505092915050565b600082601f8301121515613f8357600080fd5b8151613f96613f9182614f13565b614e1a565b91508082526020830160208301858383011115613fb257600080fd5b613fbd8382846150e7565b50505092915050565b6000613fd282356150aa565b905092915050565b6000613fe682516150aa565b905092915050565b60006020828403121561400057600080fd5b600061400e84828501613c89565b91505092915050565b60008060006060848603121561402c57600080fd5b600084013567ffffffffffffffff81111561404657600080fd5b61405286828701613c9d565b935050602061406386828701613fc6565b925050604084013567ffffffffffffffff81111561408057600080fd5b61408c86828701613da7565b9150509250925092565b600080604083850312156140a957600080fd5b600083013567ffffffffffffffff8111156140c357600080fd5b6140cf85828601613e1d565b925050602083013567ffffffffffffffff8111156140ec57600080fd5b6140f885828601613c9d565b9150509250929050565b60008060006060848603121561411757600080fd5b600084013567ffffffffffffffff81111561413157600080fd5b61413d86828701613e1d565b935050602084013567ffffffffffffffff81111561415a57600080fd5b61416686828701613c9d565b925050604084013567ffffffffffffffff81111561418357600080fd5b61418f86828701613d22565b9150509250925092565b6000602082840312156141ab57600080fd5b60006141b984828501613ea2565b91505092915050565b6000602082840312156141d457600080fd5b60006141e284828501613eb6565b91505092915050565b6000602082840312156141fd57600080fd5b600061420b84828501613eca565b91505092915050565b60006020828403121561422657600080fd5b600061423484828501613ede565b91505092915050565b60006020828403121561424f57600080fd5b600061425d84828501613f06565b91505092915050565b60006020828403121561427857600080fd5b600082015167ffffffffffffffff81111561429257600080fd5b61429e84828501613f70565b91505092915050565b6000602082840312156142b957600080fd5b60006142c784828501613fda565b91505092915050565b600080604083850312156142e357600080fd5b60006142f185828601613fda565b925050602083015167ffffffffffffffff81111561430e57600080fd5b61431a85828601613f70565b9150509250929050565b61432d81614ff8565b82525050565b600061433e82614f82565b80845260208401935061435083614f3f565b60005b8281101561438257614366868351614324565b61436f82614fc4565b9150602086019550600181019050614353565b50849250505092915050565b600061439982614f8d565b8084526020840193506143ab83614f4c565b60005b828110156143dd576143c18683516144a2565b6143ca82614fd1565b91506020860195506001810190506143ae565b50849250505092915050565b60006143f482614f98565b8084526020840193508360208202850161440d85614f59565b60005b84811015614446578383038852614428838351614514565b925061443382614fde565b9150602088019750600181019050614410565b508196508694505050505092915050565b61446081614fa3565b61446982614f66565b60005b8281101561449b5761447f8583516148d2565b61448882614feb565b915060208501945060018101905061446c565b5050505050565b6144ab81615018565b82525050565b6144ba816150b4565b82525050565b6144c9816150c6565b82525050565b6144d881615024565b82525050565b60006144e982614fb9565b8084526144fd8160208601602086016150e7565b6145068161511a565b602085010191505092915050565b600061451f82614fae565b8084526145338160208601602086016150e7565b61453c8161511a565b602085010191505092915050565b6000815460018116600081146145675760018114614587576145c8565b607f600283041680865260ff1983166020870152604086019350506145c8565b6002820480865260208601955061459d85614f70565b60005b828110156145bf578154818901526001820191506020810190506145a0565b80880195505050505b505092915050565b6000601282527f6163636f756e74206e6f742076657269667900000000000000000000000000006020830152604082019050919050565b6000600482527f64657363000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000600882527f6f70657261746f720000000000000000000000000000000000000000000000006020830152604082019050919050565b6000601482527f746f206163636f756e74206e6f7420666f756e640000000000000000000000006020830152604082019050919050565b6000600382527f73657100000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000600482527f66726f6d000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000600682527f6e6f7465496400000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000600582527f61737365740000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000601682527f66726f6d206163636f756e74206e6f7420666f756e64000000000000000000006020830152604082019050919050565b6000600782527f626f6f6b5f6e6f000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000600782527f7465726d5f6e6f000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000601882527f506172616d73206973206e6f7420636f6d706c69616e636500000000000000006020830152604082019050919050565b6000601a82527f6f70657261746f72206163636f756e74206e6f7420666f756e640000000000006020830152604082019050919050565b6000600282527f746f0000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6148db8161502e565b82525050565b60006020820190506148f66000830184614324565b92915050565b600060808201905081810360008301526149168187614333565b905061492560208301866148d2565b818103604083015261493781856143e9565b905061494660608301846144cf565b95945050505050565b60006040820190508181036000830152614969818561438e565b905061497860208301846148d2565b9392505050565b6000602082019050818103600083015261499981846143e9565b905092915050565b60006060820190506149b660008301856144a2565b6149c36020830184614457565b9392505050565b60006020820190506149df60008301846144cf565b92915050565b60006040820190506149fa60008301856144cf565b614a0760208301846144cf565b9392505050565b60006040820190508181036000830152614a2881856144de565b9050614a3760208301846144b1565b9392505050565b60006040820190508181036000830152614a5881856144de565b9050614a6760208301846144c0565b9392505050565b60006020820190508181036000830152614a88818461454a565b905092915050565b60006020820190508181036000830152614aa9816145d0565b9050919050565b60006020820190508181036000830152614ac981614607565b9050919050565b60006040820190508181036000830152614ae981614607565b90508181036020830152614afd8184614514565b905092915050565b60006020820190508181036000830152614b1e8161463e565b9050919050565b60006040820190508181036000830152614b3e8161463e565b9050614b4d6020830184614324565b92915050565b60006020820190508181036000830152614b6c81614675565b9050919050565b60006020820190508181036000830152614b8c816146ac565b9050919050565b60006040820190508181036000830152614bac816146ac565b90508181036020830152614bc081846144de565b905092915050565b60006020820190508181036000830152614be1816146e3565b9050919050565b60006040820190508181036000830152614c01816146e3565b90508181036020830152614c1581846144de565b905092915050565b60006020820190508181036000830152614c368161471a565b9050919050565b60006040820190508181036000830152614c568161471a565b90508181036020830152614c6a81846144de565b905092915050565b60006020820190508181036000830152614c8b81614751565b9050919050565b60006040820190508181036000830152614cab81614751565b9050614cba6020830184614324565b92915050565b60006020820190508181036000830152614cd981614788565b9050919050565b60006040820190508181036000830152614cf9816147bf565b90508181036020830152614d0d81846144de565b905092915050565b60006020820190508181036000830152614d2e816147f6565b9050919050565b60006040820190508181036000830152614d4e816147f6565b90508181036020830152614d6281846144de565b905092915050565b60006020820190508181036000830152614d838161482d565b9050919050565b60006020820190508181036000830152614da381614864565b9050919050565b60006020820190508181036000830152614dc38161489b565b9050919050565b60006040820190508181036000830152614de38161489b565b90508181036020830152614df781846144de565b905092915050565b6000602082019050614e1460008301846148d2565b92915050565b6000604051905081810181811067ffffffffffffffff82111715614e3d57600080fd5b8060405250919050565b600067ffffffffffffffff821115614e5e57600080fd5b602082029050602081019050919050565b600067ffffffffffffffff821115614e8657600080fd5b602082029050602081019050919050565b600067ffffffffffffffff821115614eae57600080fd5b602082029050602081019050919050565b600067ffffffffffffffff821115614ed657600080fd5b602082029050602081019050919050565b600067ffffffffffffffff821115614efe57600080fd5b","601f19601f8301169050602081019050919050565b600067ffffffffffffffff821115614f2a57600080fd5b601f19601f8301169050602081019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000819050919050565b60008160005260206000209050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600060029050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60008115159050919050565b6000819050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061506382614ff8565b9050919050565b600061507582614ff8565b9050919050565b600061508782614ff8565b9050919050565b600061509982614ff8565b9050919050565b6000819050919050565b6000819050919050565b60006150bf82614ff8565b9050919050565b60006150d182614ff8565b9050919050565b82818337600083830152505050565b60005b838110156151055780820151818401526020810190506150ea565b83811115615114576000848401525b50505050565b6000601f19601f83011690509190505600a265627a7a723058201c7873bac1cfcecb309f914d72ecc5846ad312951353d6f4b9a7034d8a405fd86c6578706572696d656e74616cf50037"};

    public static final String SM_BINARY = String.join("", SM_BINARY_ARRAY);

    public static final String[] ABI_ARRAY = {"[{\"constant\":true,\"inputs\":[],\"name\":\"ROLE_R\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"OPENING_BANK\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"ROLE_W\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"DATA\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"updateNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"OWNER\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"transactionAddress\",\"type\":\"address[]\"},{\"name\":\"uint256Args\",\"type\":\"uint256[]\"},{\"name\":\"stringValueList\",\"type\":\"string[]\"},{\"name\":\"sign\",\"type\":\"bytes32[4]\"}],\"name\":\"issue\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"},{\"name\":\"\",\"type\":\"uint256[]\"},{\"name\":\"\",\"type\":\"uint256[]\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"BALANCE\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"noteNo\",\"type\":\"uint256\"},{\"name\":\"account\",\"type\":\"address\"},{\"name\":\"sign\",\"type\":\"bytes32[4]\"}],\"name\":\"tearNote\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"key\",\"type\":\"bytes\"},{\"name\":\"value\",\"type\":\"bytes\"}],\"name\":\"insert\",\"outputs\":[{\"name\":\"replaced\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"RECORD\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"uintCondition\",\"type\":\"uint256[]\"},{\"name\":\"addressCondition\",\"type\":\"address[]\"},{\"name\":\"limit\",\"type\":\"int256[]\"},{\"name\":\"sign\",\"type\":\"bytes32[4]\"}],\"name\":\"queryBook\",\"outputs\":[{\"name\":\"\",\"type\":\"string[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"PUB_KEY\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"ADMIN\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MODE_R\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"TYPE_ADMIN\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"TYPE_OWNER\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"key\",\"type\":\"bytes\"},{\"name\":\"value\",\"type\":\"bytes\"}],\"name\":\"add\",\"outputs\":[{\"name\":\"replaced\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"},{\"name\":\"sign\",\"type\":\"bytes32[4]\"}],\"name\":\"getTearNotes\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"sign\",\"type\":\"bytes32[4]\"}],\"name\":\"addBook\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"},{\"name\":\"start\",\"type\":\"uint256\"},{\"name\":\"end\",\"type\":\"uint256\"},{\"name\":\"sign\",\"type\":\"bytes32[4]\"}],\"name\":\"getAccountNotes\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getOrg\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MODE_W\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"key\",\"type\":\"bytes\"}],\"name\":\"remove\",\"outputs\":[{\"name\":\"replaced\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"noteNo\",\"type\":\"uint256\"},{\"name\":\"account\",\"type\":\"address\"},{\"name\":\"key\",\"type\":\"string\"},{\"name\":\"sign\",\"type\":\"bytes32[4]\"}],\"name\":\"checkGetAuth\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"OWNER_ADDR\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_noteId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"noteNo\",\"type\":\"uint256\"},{\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"checkOwnerSingle\",\"outputs\":[{\"name\":\"isOwner\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"ASSETS\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"USER_ADDR\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getTotalNoteSize\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_price\",\"type\":\"uint256\"},{\"name\":\"sign\",\"type\":\"bytes32[4]\"}],\"name\":\"setPrice\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"batchNo\",\"type\":\"uint256\"},{\"name\":\"date\",\"type\":\"uint256\"},{\"name\":\"isEffectiveDate\",\"type\":\"bool\"},{\"name\":\"account\",\"type\":\"address\"},{\"name\":\"sign\",\"type\":\"bytes32[4]\"}],\"name\":\"updateNoteBatch\",\"outputs\":[{\"name\":\"isUpdate\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"key\",\"type\":\"bytes\"},{\"name\":\"sign\",\"type\":\"bytes32[4]\"}],\"name\":\"removeWithSign\",\"outputs\":[{\"name\":\"replaced\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"batchNo\",\"type\":\"uint256\"},{\"name\":\"sign\",\"type\":\"bytes32[4]\"}],\"name\":\"enableBatch\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"USER\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"key\",\"type\":\"bytes\"},{\"name\":\"sign\",\"type\":\"bytes32[4]\"}],\"name\":\"getWithSign\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"oldNoteNo\",\"type\":\"uint256\"},{\"name\":\"newNoteNo\",\"type\":\"uint256\"},{\"name\":\"account\",\"type\":\"address\"},{\"name\":\"sign\",\"type\":\"bytes32[4]\"}],\"name\":\"updateNoteNo\",\"outputs\":[{\"name\":\"isUpdate\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"},{\"name\":\"noteNo\",\"type\":\"uint256\"},{\"name\":\"sign\",\"type\":\"bytes32[4]\"}],\"name\":\"accountHoldNote\",\"outputs\":[{\"name\":\"isContain\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"size\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"OPERATOR\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"ROLE\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"o","wner\",\"type\":\"address\"},{\"name\":\"batchNo\",\"type\":\"uint256\"},{\"name\":\"noteId\",\"type\":\"uint256\"},{\"name\":\"noteNoPrefix\",\"type\":\"uint256\"},{\"name\":\"noteNoSize\",\"type\":\"uint256\"},{\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"createNote\",\"outputs\":[{\"name\":\"noteNo\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"noteNo\",\"type\":\"uint256\"},{\"name\":\"keys\",\"type\":\"bytes[]\"},{\"name\":\"values\",\"type\":\"bytes[]\"},{\"name\":\"account\",\"type\":\"address\"},{\"name\":\"sign\",\"type\":\"bytes32[4]\"}],\"name\":\"updateNoteProperties\",\"outputs\":[{\"name\":\"noteKeys\",\"type\":\"bytes[]\"},{\"name\":\"noteValues\",\"type\":\"bytes[]\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"price\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"key\",\"type\":\"bytes\"},{\"name\":\"value\",\"type\":\"bytes\"}],\"name\":\"set\",\"outputs\":[{\"name\":\"replaced\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"transactionAddress\",\"type\":\"address[]\"},{\"name\":\"noteNos\",\"type\":\"uint256[]\"},{\"name\":\"stringValueList\",\"type\":\"string[]\"},{\"name\":\"sign\",\"type\":\"bytes32[4]\"}],\"name\":\"checkTransferAuth\",\"outputs\":[{\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"key\",\"type\":\"bytes\"},{\"name\":\"value\",\"type\":\"bytes\"},{\"name\":\"sign\",\"type\":\"bytes32[4]\"}],\"name\":\"addWithSign\",\"outputs\":[{\"name\":\"replaced\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"ADMIN_ADDR\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getAccountManager\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"ID\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"ADDR\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"TYPE_PUBLIC\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"OPERATOR_ADDR\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"TYPE\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"noteNo\",\"type\":\"uint256\"},{\"name\":\"account\",\"type\":\"address\"},{\"name\":\"sign\",\"type\":\"bytes32[4]\"}],\"name\":\"unfreezeNote\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"effectiveDate\",\"type\":\"uint256\"},{\"name\":\"expirationDate\",\"type\":\"uint256\"},{\"name\":\"amount\",\"type\":\"uint256\"},{\"name\":\"issuer\",\"type\":\"address\"}],\"name\":\"createBatch\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"},{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"},{\"name\":\"sign\",\"type\":\"bytes32[4]\"}],\"name\":\"getAccountNoteSize\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"noteNo\",\"type\":\"uint256\"},{\"name\":\"account\",\"type\":\"address\"},{\"name\":\"sign\",\"type\":\"bytes32[4]\"}],\"name\":\"getNoteDetail\",\"outputs\":[{\"name\":\"\",\"type\":\"address[]\"},{\"name\":\"\",\"type\":\"uint256[]\"},{\"name\":\"\",\"type\":\"uint256[]\"},{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getAuthCenter\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getAuthManager\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"key\",\"type\":\"bytes\"},{\"name\":\"value\",\"type\":\"bytes\"},{\"name\":\"sign\",\"type\":\"bytes32[4]\"}],\"name\":\"insertWithSign\",\"outputs\":[{\"name\":\"replaced\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"noteNo\",\"type\":\"uint256\"},{\"name\":\"account\",\"type\":\"address\"},{\"name\":\"sign\",\"type\":\"bytes32[4]\"}],\"name\":\"getNoteProperties\",\"outputs\":[{\"name\":\"noteKeys\",\"type\":\"bytes[]\"},{\"name\":\"noteValues\",\"type\":\"bytes[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"key\",\"type\":\"bytes\"}],\"name\":\"get\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"sign\",\"type\":\"bytes32[4]\"}],\"name\":\"getHolders\",\"outputs\":[{\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"key\",\"type\":\"bytes\"},{\"name\":\"value\",\"type\":\"bytes\"},{\"name\":\"sign\",\"type\":\"bytes32[4]\"}],\"name\":\"setWithSign\",\"outputs\":[{\"name\":\"replaced\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"noteNo\",\"type\":\"uint256\"},{\"name\":\"account\",\"type\":\"address\"},{\"name\":\"sign\",\"type\":\"bytes32[4]\"}],\"name\":\"freezeNote\",\"outputs\":[{\"name\":\"isForzen\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"},{\"name\":\"sign\",\"type\":\"bytes32[4]\"}],\"name\":\"openAccount\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"noteId\",\"type\":\"uint256\"}],\"name\":\"getNoteNoByNoteId\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"KEY_ALL\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"transactionAddress\",\"type\":\"address[]\"},{\"name\":\"noteNos\",\"type\":\"uint256[]\"},{\"name\":\"stringValueList\",\"type\":\"string[]\"},{\"name\":\"sign\",\"type\":\"bytes32[4]\"}],\"name\":\"transfer\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"},{\"name\":\"\",\"type\":\"uint256[]\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"assetName\",\"type\":\"string\"},{\"name\":\"authCenterAddr\",\"type\":\"address\"},{\"name\":\"orgAddress\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"\",\"type\":\"uint256[]\"}],\"name\":\"LogAccountList\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"noteNo\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"noteID\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"LogNoteStatus\",\"type\":\"event\"}]"};

    public static final String ABI = String.join("", ABI_ARRAY);

    public static final String FUNC_ROLE_R = "ROLE_R";

    public static final String FUNC_OPENING_BANK = "OPENING_BANK";

    public static final String FUNC_ROLE_W = "ROLE_W";

    public static final String FUNC_DATA = "DATA";

    public static final String FUNC_UPDATENONCE = "updateNonce";

    public static final String FUNC_OWNER = "OWNER";

    public static final String FUNC_ISSUE = "issue";

    public static final String FUNC_BALANCE = "BALANCE";

    public static final String FUNC_TEARNOTE = "tearNote";

    public static final String FUNC_INSERT = "insert";

    public static final String FUNC_RECORD = "RECORD";

    public static final String FUNC_QUERYBOOK = "queryBook";

    public static final String FUNC_PUB_KEY = "PUB_KEY";

    public static final String FUNC_ADMIN = "ADMIN";

    public static final String FUNC_MODE_R = "MODE_R";

    public static final String FUNC_TYPE_ADMIN = "TYPE_ADMIN";

    public static final String FUNC_TYPE_OWNER = "TYPE_OWNER";

    public static final String FUNC_ADD = "add";

    public static final String FUNC_GETTEARNOTES = "getTearNotes";

    public static final String FUNC_ADDBOOK = "addBook";

    public static final String FUNC_GETACCOUNTNOTES = "getAccountNotes";

    public static final String FUNC_GETORG = "getOrg";

    public static final String FUNC_MODE_W = "MODE_W";

    public static final String FUNC_REMOVE = "remove";

    public static final String FUNC_CHECKGETAUTH = "checkGetAuth";

    public static final String FUNC_OWNER_ADDR = "OWNER_ADDR";

    public static final String FUNC_OWNEROF = "ownerOf";

    public static final String FUNC_CHECKOWNERSINGLE = "checkOwnerSingle";

    public static final String FUNC_ASSETS = "ASSETS";

    public static final String FUNC_USER_ADDR = "USER_ADDR";

    public static final String FUNC_GETTOTALNOTESIZE = "getTotalNoteSize";

    public static final String FUNC_SETPRICE = "setPrice";

    public static final String FUNC_UPDATENOTEBATCH = "updateNoteBatch";

    public static final String FUNC_REMOVEWITHSIGN = "removeWithSign";

    public static final String FUNC_ENABLEBATCH = "enableBatch";

    public static final String FUNC_USER = "USER";

    public static final String FUNC_GETWITHSIGN = "getWithSign";

    public static final String FUNC_UPDATENOTENO = "updateNoteNo";

    public static final String FUNC_ACCOUNTHOLDNOTE = "accountHoldNote";

    public static final String FUNC_SIZE = "size";

    public static final String FUNC_OPERATOR = "OPERATOR";

    public static final String FUNC_ROLE = "ROLE";

    public static final String FUNC_CREATENOTE = "createNote";

    public static final String FUNC_UPDATENOTEPROPERTIES = "updateNoteProperties";

    public static final String FUNC_PRICE = "price";

    public static final String FUNC_SET = "set";

    public static final String FUNC_CHECKTRANSFERAUTH = "checkTransferAuth";

    public static final String FUNC_ADDWITHSIGN = "addWithSign";

    public static final String FUNC_ADMIN_ADDR = "ADMIN_ADDR";

    public static final String FUNC_GETACCOUNTMANAGER = "getAccountManager";

    public static final String FUNC_ID = "ID";

    public static final String FUNC_ADDR = "ADDR";

    public static final String FUNC_TYPE_PUBLIC = "TYPE_PUBLIC";

    public static final String FUNC_OPERATOR_ADDR = "OPERATOR_ADDR";

    public static final String FUNC_TYPE = "TYPE";

    public static final String FUNC_UNFREEZENOTE = "unfreezeNote";

    public static final String FUNC_CREATEBATCH = "createBatch";

    public static final String FUNC_GETACCOUNTNOTESIZE = "getAccountNoteSize";

    public static final String FUNC_GETNOTEDETAIL = "getNoteDetail";

    public static final String FUNC_GETAUTHCENTER = "getAuthCenter";

    public static final String FUNC_GETAUTHMANAGER = "getAuthManager";

    public static final String FUNC_INSERTWITHSIGN = "insertWithSign";

    public static final String FUNC_GETNONCE = "getNonce";

    public static final String FUNC_GETNOTEPROPERTIES = "getNoteProperties";

    public static final String FUNC_GET = "get";

    public static final String FUNC_GETHOLDERS = "getHolders";

    public static final String FUNC_SETWITHSIGN = "setWithSign";

    public static final String FUNC_FREEZENOTE = "freezeNote";

    public static final String FUNC_OPENACCOUNT = "openAccount";

    public static final String FUNC_GETNOTENOBYNOTEID = "getNoteNoByNoteId";

    public static final String FUNC_KEY_ALL = "KEY_ALL";

    public static final String FUNC_TRANSFER = "transfer";

    public static final Event LOGACCOUNTLIST_EVENT = new Event("LogAccountList", 
            Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}, new TypeReference<DynamicArray<Uint256>>() {}));
    ;

    public static final Event LOGNOTESTATUS_EVENT = new Event("LogNoteStatus", 
            Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}, new TypeReference<Uint8>() {}));
    ;

    protected NonFungibleAsset(String contractAddress, Client client, CryptoKeyPair credential) {
        super(getBinary(client.getCryptoSuite()), contractAddress, client, credential);
    }

    public static String getBinary(CryptoSuite cryptoSuite) {
        return (cryptoSuite.getCryptoTypeConfig() == CryptoType.ECDSA_TYPE ? BINARY : SM_BINARY);
    }

    public byte[] ROLE_R() throws ContractException {
        final Function function = new Function(FUNC_ROLE_R, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<DynamicBytes>() {}));
        return executeCallWithSingleValueReturn(function, byte[].class);
    }

    public byte[] OPENING_BANK() throws ContractException {
        final Function function = new Function(FUNC_OPENING_BANK, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<DynamicBytes>() {}));
        return executeCallWithSingleValueReturn(function, byte[].class);
    }

    public byte[] ROLE_W() throws ContractException {
        final Function function = new Function(FUNC_ROLE_W, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<DynamicBytes>() {}));
        return executeCallWithSingleValueReturn(function, byte[].class);
    }

    public byte[] DATA() throws ContractException {
        final Function function = new Function(FUNC_DATA, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<DynamicBytes>() {}));
        return executeCallWithSingleValueReturn(function, byte[].class);
    }

    public TransactionReceipt updateNonce() {
        final Function function = new Function(
                FUNC_UPDATENONCE, 
                Arrays.<Type>asList(), 
                Collections.<TypeReference<?>>emptyList());
        return executeTransaction(function);
    }

    public void updateNonce(TransactionCallback callback) {
        final Function function = new Function(
                FUNC_UPDATENONCE, 
                Arrays.<Type>asList(), 
                Collections.<TypeReference<?>>emptyList());
        asyncExecuteTransaction(function, callback);
    }

    public String getSignedTransactionForUpdateNonce() {
        final Function function = new Function(
                FUNC_UPDATENONCE, 
                Arrays.<Type>asList(), 
                Collections.<TypeReference<?>>emptyList());
        return createSignedTransaction(function);
    }

    public Tuple1<BigInteger> getUpdateNonceOutput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function = new Function(FUNC_UPDATENONCE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<BigInteger>(

                (BigInteger) results.get(0).getValue()
                );
    }

    public byte[] OWNER() throws ContractException {
        final Function function = new Function(FUNC_OWNER, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<DynamicBytes>() {}));
        return executeCallWithSingleValueReturn(function, byte[].class);
    }

    public TransactionReceipt issue(List<String> transactionAddress, List<BigInteger> uint256Args, List<String> stringValueList, List<byte[]> sign) {
        final Function function = new Function(
                FUNC_ISSUE, 
                Arrays.<Type>asList(transactionAddress.isEmpty()? DynamicArray.empty("address[]"):new DynamicArray<Address>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(transactionAddress, Address.class)),
                uint256Args.isEmpty()? DynamicArray.empty("uint256[]"):new DynamicArray<Uint256>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(uint256Args, Uint256.class)),
                stringValueList.isEmpty()? DynamicArray.empty("string[]"):new DynamicArray<Utf8String>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(stringValueList, Utf8String.class)),
                new StaticArray4<Bytes32>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(sign, Bytes32.class))),
                Collections.<TypeReference<?>>emptyList());
        return executeTransaction(function);
    }

    public void issue(List<String> transactionAddress, List<BigInteger> uint256Args, List<String> stringValueList, List<byte[]> sign, TransactionCallback callback) {
        final Function function = new Function(
                FUNC_ISSUE, 
                Arrays.<Type>asList(transactionAddress.isEmpty()? DynamicArray.empty("address[]"):new DynamicArray<Address>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(transactionAddress, Address.class)),
                uint256Args.isEmpty()? DynamicArray.empty("uint256[]"):new DynamicArray<Uint256>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(uint256Args, Uint256.class)),
                stringValueList.isEmpty()? DynamicArray.empty("string[]"):new DynamicArray<Utf8String>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(stringValueList, Utf8String.class)),
                new StaticArray4<Bytes32>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(sign, Bytes32.class))),
                Collections.<TypeReference<?>>emptyList());
        asyncExecuteTransaction(function, callback);
    }

    public String getSignedTransactionForIssue(List<String> transactionAddress, List<BigInteger> uint256Args, List<String> stringValueList, List<byte[]> sign) {
        final Function function = new Function(
                FUNC_ISSUE, 
                Arrays.<Type>asList(transactionAddress.isEmpty()? DynamicArray.empty("address[]"):new DynamicArray<Address>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(transactionAddress, Address.class)),
                uint256Args.isEmpty()? DynamicArray.empty("uint256[]"):new DynamicArray<Uint256>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(uint256Args, Uint256.class)),
                stringValueList.isEmpty()? DynamicArray.empty("string[]"):new DynamicArray<Utf8String>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(stringValueList, Utf8String.class)),
                new StaticArray4<Bytes32>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(sign, Bytes32.class))),
                Collections.<TypeReference<?>>emptyList());
        return createSignedTransaction(function);
    }

    public Tuple4<List<String>, List<BigInteger>, List<String>, List<byte[]>> getIssueInput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function = new Function(FUNC_ISSUE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<DynamicArray<Address>>() {}, new TypeReference<DynamicArray<Uint256>>() {}, new TypeReference<DynamicArray<Utf8String>>() {}, new TypeReference<StaticArray4<Bytes32>>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple4<List<String>, List<BigInteger>, List<String>, List<byte[]>>(

                convertToNative((List<Address>) results.get(0).getValue()), 
                convertToNative((List<Uint256>) results.get(1).getValue()), 
                convertToNative((List<Utf8String>) results.get(2).getValue()), 
                convertToNative((List<Bytes32>) results.get(3).getValue())
                );
    }

    public Tuple3<BigInteger, List<BigInteger>, List<BigInteger>> getIssueOutput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function = new Function(FUNC_ISSUE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}, new TypeReference<DynamicArray<Uint256>>() {}, new TypeReference<DynamicArray<Uint256>>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple3<BigInteger, List<BigInteger>, List<BigInteger>>(

                (BigInteger) results.get(0).getValue(), 
                convertToNative((List<Uint256>) results.get(1).getValue()), 
                convertToNative((List<Uint256>) results.get(2).getValue())
                );
    }

    public byte[] BALANCE() throws ContractException {
        final Function function = new Function(FUNC_BALANCE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<DynamicBytes>() {}));
        return executeCallWithSingleValueReturn(function, byte[].class);
    }

    public TransactionReceipt tearNote(BigInteger noteNo, String account, List<byte[]> sign) {
        final Function function = new Function(
                FUNC_TEARNOTE, 
                Arrays.<Type>asList(new Uint256(noteNo),
                new Address(account),
                new StaticArray4<Bytes32>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(sign, Bytes32.class))),
                Collections.<TypeReference<?>>emptyList());
        return executeTransaction(function);
    }

    public void tearNote(BigInteger noteNo, String account, List<byte[]> sign, TransactionCallback callback) {
        final Function function = new Function(
                FUNC_TEARNOTE, 
                Arrays.<Type>asList(new Uint256(noteNo),
                new Address(account),
                new StaticArray4<Bytes32>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(sign, Bytes32.class))),
                Collections.<TypeReference<?>>emptyList());
        asyncExecuteTransaction(function, callback);
    }

    public String getSignedTransactionForTearNote(BigInteger noteNo, String account, List<byte[]> sign) {
        final Function function = new Function(
                FUNC_TEARNOTE, 
                Arrays.<Type>asList(new Uint256(noteNo),
                new Address(account),
                new StaticArray4<Bytes32>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(sign, Bytes32.class))),
                Collections.<TypeReference<?>>emptyList());
        return createSignedTransaction(function);
    }

    public Tuple3<BigInteger, String, List<byte[]>> getTearNoteInput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function = new Function(FUNC_TEARNOTE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}, new TypeReference<Address>() {}, new TypeReference<StaticArray4<Bytes32>>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple3<BigInteger, String, List<byte[]>>(

                (BigInteger) results.get(0).getValue(), 
                (String) results.get(1).getValue(), 
                convertToNative((List<Bytes32>) results.get(2).getValue())
                );
    }

    public Tuple1<Boolean> getTearNoteOutput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function = new Function(FUNC_TEARNOTE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Bool>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<Boolean>(

                (Boolean) results.get(0).getValue()
                );
    }

    public TransactionReceipt insert(byte[] key, byte[] value) {
        final Function function = new Function(
                FUNC_INSERT, 
                Arrays.<Type>asList(new DynamicBytes(key),
                new DynamicBytes(value)),
                Collections.<TypeReference<?>>emptyList());
        return executeTransaction(function);
    }

    public void insert(byte[] key, byte[] value, TransactionCallback callback) {
        final Function function = new Function(
                FUNC_INSERT, 
                Arrays.<Type>asList(new DynamicBytes(key),
                new DynamicBytes(value)),
                Collections.<TypeReference<?>>emptyList());
        asyncExecuteTransaction(function, callback);
    }

    public String getSignedTransactionForInsert(byte[] key, byte[] value) {
        final Function function = new Function(
                FUNC_INSERT, 
                Arrays.<Type>asList(new DynamicBytes(key),
                new DynamicBytes(value)),
                Collections.<TypeReference<?>>emptyList());
        return createSignedTransaction(function);
    }

    public Tuple2<byte[], byte[]> getInsertInput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function = new Function(FUNC_INSERT, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<DynamicBytes>() {}, new TypeReference<DynamicBytes>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple2<byte[], byte[]>(

                (byte[]) results.get(0).getValue(), 
                (byte[]) results.get(1).getValue()
                );
    }

    public Tuple1<Boolean> getInsertOutput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function = new Function(FUNC_INSERT, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Bool>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<Boolean>(

                (Boolean) results.get(0).getValue()
                );
    }

    public byte[] RECORD() throws ContractException {
        final Function function = new Function(FUNC_RECORD, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<DynamicBytes>() {}));
        return executeCallWithSingleValueReturn(function, byte[].class);
    }

    public List queryBook(List<BigInteger> uintCondition, List<String> addressCondition, List<BigInteger> limit, List<byte[]> sign) throws ContractException {
        final Function function = new Function(FUNC_QUERYBOOK, 
                Arrays.<Type>asList(uintCondition.isEmpty()? DynamicArray.empty("uint256[]"):new DynamicArray<Uint256>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(uintCondition, Uint256.class)),
                addressCondition.isEmpty()? DynamicArray.empty("address[]"):new DynamicArray<Address>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(addressCondition, Address.class)),
                limit.isEmpty()? DynamicArray.empty("int256[]"):new DynamicArray<org.fisco.bcos.sdk.abi.datatypes.generated.Int256>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(limit, org.fisco.bcos.sdk.abi.datatypes.generated.Int256.class)), 
                new StaticArray4<Bytes32>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(sign, Bytes32.class))),
                Arrays.<TypeReference<?>>asList(new TypeReference<DynamicArray<Utf8String>>() {}));
        List<Type> result = (List<Type>) executeCallWithSingleValueReturn(function, List.class);
        return convertToNative(result);
    }

    public byte[] PUB_KEY() throws ContractException {
        final Function function = new Function(FUNC_PUB_KEY, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<DynamicBytes>() {}));
        return executeCallWithSingleValueReturn(function, byte[].class);
    }

    public byte[] ADMIN() throws ContractException {
        final Function function = new Function(FUNC_ADMIN, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<DynamicBytes>() {}));
        return executeCallWithSingleValueReturn(function, byte[].class);
    }

    public byte[] MODE_R() throws ContractException {
        final Function function = new Function(FUNC_MODE_R, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<DynamicBytes>() {}));
        return executeCallWithSingleValueReturn(function, byte[].class);
    }

    public byte[] TYPE_ADMIN() throws ContractException {
        final Function function = new Function(FUNC_TYPE_ADMIN, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<DynamicBytes>() {}));
        return executeCallWithSingleValueReturn(function, byte[].class);
    }

    public byte[] TYPE_OWNER() throws ContractException {
        final Function function = new Function(FUNC_TYPE_OWNER, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<DynamicBytes>() {}));
        return executeCallWithSingleValueReturn(function, byte[].class);
    }

    public TransactionReceipt add(byte[] key, byte[] value) {
        final Function function = new Function(
                FUNC_ADD, 
                Arrays.<Type>asList(new DynamicBytes(key),
                new DynamicBytes(value)),
                Collections.<TypeReference<?>>emptyList());
        return executeTransaction(function);
    }

    public void add(byte[] key, byte[] value, TransactionCallback callback) {
        final Function function = new Function(
                FUNC_ADD, 
                Arrays.<Type>asList(new DynamicBytes(key),
                new DynamicBytes(value)),
                Collections.<TypeReference<?>>emptyList());
        asyncExecuteTransaction(function, callback);
    }

    public String getSignedTransactionForAdd(byte[] key, byte[] value) {
        final Function function = new Function(
                FUNC_ADD, 
                Arrays.<Type>asList(new DynamicBytes(key),
                new DynamicBytes(value)),
                Collections.<TypeReference<?>>emptyList());
        return createSignedTransaction(function);
    }

    public Tuple2<byte[], byte[]> getAddInput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function = new Function(FUNC_ADD, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<DynamicBytes>() {}, new TypeReference<DynamicBytes>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple2<byte[], byte[]>(

                (byte[]) results.get(0).getValue(), 
                (byte[]) results.get(1).getValue()
                );
    }

    public Tuple1<Boolean> getAddOutput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function = new Function(FUNC_ADD, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Bool>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<Boolean>(

                (Boolean) results.get(0).getValue()
                );
    }

    public List getTearNotes(String account, List<byte[]> sign) throws ContractException {
        final Function function = new Function(FUNC_GETTEARNOTES, 
                Arrays.<Type>asList(new Address(account),
                new StaticArray4<Bytes32>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(sign, Bytes32.class))),
                Arrays.<TypeReference<?>>asList(new TypeReference<DynamicArray<Uint256>>() {}));
        List<Type> result = (List<Type>) executeCallWithSingleValueReturn(function, List.class);
        return convertToNative(result);
    }

    public TransactionReceipt addBook(List<byte[]> sign) {
        final Function function = new Function(
                FUNC_ADDBOOK, 
                Arrays.<Type>asList(new StaticArray4<Bytes32>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(sign, Bytes32.class))),
                Collections.<TypeReference<?>>emptyList());
        return executeTransaction(function);
    }

    public void addBook(List<byte[]> sign, TransactionCallback callback) {
        final Function function = new Function(
                FUNC_ADDBOOK, 
                Arrays.<Type>asList(new StaticArray4<Bytes32>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(sign, Bytes32.class))),
                Collections.<TypeReference<?>>emptyList());
        asyncExecuteTransaction(function, callback);
    }

    public String getSignedTransactionForAddBook(List<byte[]> sign) {
        final Function function = new Function(
                FUNC_ADDBOOK, 
                Arrays.<Type>asList(new StaticArray4<Bytes32>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(sign, Bytes32.class))),
                Collections.<TypeReference<?>>emptyList());
        return createSignedTransaction(function);
    }

    public Tuple1<List<byte[]>> getAddBookInput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function = new Function(FUNC_ADDBOOK, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<StaticArray4<Bytes32>>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<List<byte[]>>(

                convertToNative((List<Bytes32>) results.get(0).getValue())
                );
    }

    public Tuple1<BigInteger> getAddBookOutput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function = new Function(FUNC_ADDBOOK, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<BigInteger>(

                (BigInteger) results.get(0).getValue()
                );
    }

    public List getAccountNotes(String account, BigInteger start, BigInteger end, List<byte[]> sign) throws ContractException {
        final Function function = new Function(FUNC_GETACCOUNTNOTES, 
                Arrays.<Type>asList(new Address(account),
                new Uint256(start),
                new Uint256(end),
                new StaticArray4<Bytes32>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(sign, Bytes32.class))),
                Arrays.<TypeReference<?>>asList(new TypeReference<DynamicArray<Uint256>>() {}));
        List<Type> result = (List<Type>) executeCallWithSingleValueReturn(function, List.class);
        return convertToNative(result);
    }

    public String getOrg() throws ContractException {
        final Function function = new Function(FUNC_GETORG, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}));
        return executeCallWithSingleValueReturn(function, String.class);
    }

    public byte[] MODE_W() throws ContractException {
        final Function function = new Function(FUNC_MODE_W, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<DynamicBytes>() {}));
        return executeCallWithSingleValueReturn(function, byte[].class);
    }

    public TransactionReceipt remove(byte[] key) {
        final Function function = new Function(
                FUNC_REMOVE, 
                Arrays.<Type>asList(new DynamicBytes(key)),
                Collections.<TypeReference<?>>emptyList());
        return executeTransaction(function);
    }

    public void remove(byte[] key, TransactionCallback callback) {
        final Function function = new Function(
                FUNC_REMOVE, 
                Arrays.<Type>asList(new DynamicBytes(key)),
                Collections.<TypeReference<?>>emptyList());
        asyncExecuteTransaction(function, callback);
    }

    public String getSignedTransactionForRemove(byte[] key) {
        final Function function = new Function(
                FUNC_REMOVE, 
                Arrays.<Type>asList(new DynamicBytes(key)),
                Collections.<TypeReference<?>>emptyList());
        return createSignedTransaction(function);
    }

    public Tuple1<byte[]> getRemoveInput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function = new Function(FUNC_REMOVE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<DynamicBytes>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<byte[]>(

                (byte[]) results.get(0).getValue()
                );
    }

    public Tuple1<Boolean> getRemoveOutput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function = new Function(FUNC_REMOVE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Bool>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<Boolean>(

                (Boolean) results.get(0).getValue()
                );
    }

    public TransactionReceipt checkGetAuth(BigInteger noteNo, String account, String key, List<byte[]> sign) {
        final Function function = new Function(
                FUNC_CHECKGETAUTH, 
                Arrays.<Type>asList(new Uint256(noteNo),
                new Address(account),
                new Utf8String(key),
                new StaticArray4<Bytes32>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(sign, Bytes32.class))),
                Collections.<TypeReference<?>>emptyList());
        return executeTransaction(function);
    }

    public void checkGetAuth(BigInteger noteNo, String account, String key, List<byte[]> sign, TransactionCallback callback) {
        final Function function = new Function(
                FUNC_CHECKGETAUTH, 
                Arrays.<Type>asList(new Uint256(noteNo),
                new Address(account),
                new Utf8String(key),
                new StaticArray4<Bytes32>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(sign, Bytes32.class))),
                Collections.<TypeReference<?>>emptyList());
        asyncExecuteTransaction(function, callback);
    }

    public String getSignedTransactionForCheckGetAuth(BigInteger noteNo, String account, String key, List<byte[]> sign) {
        final Function function = new Function(
                FUNC_CHECKGETAUTH, 
                Arrays.<Type>asList(new Uint256(noteNo),
                new Address(account),
                new Utf8String(key),
                new StaticArray4<Bytes32>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(sign, Bytes32.class))),
                Collections.<TypeReference<?>>emptyList());
        return createSignedTransaction(function);
    }

    public Tuple4<BigInteger, String, String, List<byte[]>> getCheckGetAuthInput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function = new Function(FUNC_CHECKGETAUTH, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}, new TypeReference<Address>() {}, new TypeReference<Utf8String>() {}, new TypeReference<StaticArray4<Bytes32>>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple4<BigInteger, String, String, List<byte[]>>(

                (BigInteger) results.get(0).getValue(), 
                (String) results.get(1).getValue(), 
                (String) results.get(2).getValue(), 
                convertToNative((List<Bytes32>) results.get(3).getValue())
                );
    }

    public String OWNER_ADDR() throws ContractException {
        final Function function = new Function(FUNC_OWNER_ADDR, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}));
        return executeCallWithSingleValueReturn(function, String.class);
    }

    public String ownerOf(BigInteger _noteId) throws ContractException {
        final Function function = new Function(FUNC_OWNEROF, 
                Arrays.<Type>asList(new Uint256(_noteId)),
                Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}));
        return executeCallWithSingleValueReturn(function, String.class);
    }

    public TransactionReceipt checkOwnerSingle(BigInteger noteNo, String _owner) {
        final Function function = new Function(
                FUNC_CHECKOWNERSINGLE, 
                Arrays.<Type>asList(new Uint256(noteNo),
                new Address(_owner)),
                Collections.<TypeReference<?>>emptyList());
        return executeTransaction(function);
    }

    public void checkOwnerSingle(BigInteger noteNo, String _owner, TransactionCallback callback) {
        final Function function = new Function(
                FUNC_CHECKOWNERSINGLE, 
                Arrays.<Type>asList(new Uint256(noteNo),
                new Address(_owner)),
                Collections.<TypeReference<?>>emptyList());
        asyncExecuteTransaction(function, callback);
    }

    public String getSignedTransactionForCheckOwnerSingle(BigInteger noteNo, String _owner) {
        final Function function = new Function(
                FUNC_CHECKOWNERSINGLE, 
                Arrays.<Type>asList(new Uint256(noteNo),
                new Address(_owner)),
                Collections.<TypeReference<?>>emptyList());
        return createSignedTransaction(function);
    }

    public Tuple2<BigInteger, String> getCheckOwnerSingleInput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function = new Function(FUNC_CHECKOWNERSINGLE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}, new TypeReference<Address>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple2<BigInteger, String>(

                (BigInteger) results.get(0).getValue(), 
                (String) results.get(1).getValue()
                );
    }

    public Tuple1<Boolean> getCheckOwnerSingleOutput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function = new Function(FUNC_CHECKOWNERSINGLE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Bool>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<Boolean>(

                (Boolean) results.get(0).getValue()
                );
    }

    public byte[] ASSETS() throws ContractException {
        final Function function = new Function(FUNC_ASSETS, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<DynamicBytes>() {}));
        return executeCallWithSingleValueReturn(function, byte[].class);
    }

    public String USER_ADDR() throws ContractException {
        final Function function = new Function(FUNC_USER_ADDR, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}));
        return executeCallWithSingleValueReturn(function, String.class);
    }

    public BigInteger getTotalNoteSize() throws ContractException {
        final Function function = new Function(FUNC_GETTOTALNOTESIZE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        return executeCallWithSingleValueReturn(function, BigInteger.class);
    }

    public TransactionReceipt setPrice(BigInteger _price, List<byte[]> sign) {
        final Function function = new Function(
                FUNC_SETPRICE, 
                Arrays.<Type>asList(new Uint256(_price),
                new StaticArray4<Bytes32>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(sign, Bytes32.class))),
                Collections.<TypeReference<?>>emptyList());
        return executeTransaction(function);
    }

    public void setPrice(BigInteger _price, List<byte[]> sign, TransactionCallback callback) {
        final Function function = new Function(
                FUNC_SETPRICE, 
                Arrays.<Type>asList(new Uint256(_price),
                new StaticArray4<Bytes32>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(sign, Bytes32.class))),
                Collections.<TypeReference<?>>emptyList());
        asyncExecuteTransaction(function, callback);
    }

    public String getSignedTransactionForSetPrice(BigInteger _price, List<byte[]> sign) {
        final Function function = new Function(
                FUNC_SETPRICE, 
                Arrays.<Type>asList(new Uint256(_price),
                new StaticArray4<Bytes32>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(sign, Bytes32.class))),
                Collections.<TypeReference<?>>emptyList());
        return createSignedTransaction(function);
    }

    public Tuple2<BigInteger, List<byte[]>> getSetPriceInput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function = new Function(FUNC_SETPRICE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}, new TypeReference<StaticArray4<Bytes32>>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple2<BigInteger, List<byte[]>>(

                (BigInteger) results.get(0).getValue(), 
                convertToNative((List<Bytes32>) results.get(1).getValue())
                );
    }

    public Tuple1<BigInteger> getSetPriceOutput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function = new Function(FUNC_SETPRICE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<BigInteger>(

                (BigInteger) results.get(0).getValue()
                );
    }

    public TransactionReceipt updateNoteBatch(BigInteger batchNo, BigInteger date, Boolean isEffectiveDate, String account, List<byte[]> sign) {
        final Function function = new Function(
                FUNC_UPDATENOTEBATCH, 
                Arrays.<Type>asList(new Uint256(batchNo),
                new Uint256(date),
                new Bool(isEffectiveDate),
                new Address(account),
                new StaticArray4<Bytes32>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(sign, Bytes32.class))),
                Collections.<TypeReference<?>>emptyList());
        return executeTransaction(function);
    }

    public void updateNoteBatch(BigInteger batchNo, BigInteger date, Boolean isEffectiveDate, String account, List<byte[]> sign, TransactionCallback callback) {
        final Function function = new Function(
                FUNC_UPDATENOTEBATCH, 
                Arrays.<Type>asList(new Uint256(batchNo),
                new Uint256(date),
                new Bool(isEffectiveDate),
                new Address(account),
                new StaticArray4<Bytes32>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(sign, Bytes32.class))),
                Collections.<TypeReference<?>>emptyList());
        asyncExecuteTransaction(function, callback);
    }

    public String getSignedTransactionForUpdateNoteBatch(BigInteger batchNo, BigInteger date, Boolean isEffectiveDate, String account, List<byte[]> sign) {
        final Function function = new Function(
                FUNC_UPDATENOTEBATCH, 
                Arrays.<Type>asList(new Uint256(batchNo),
                new Uint256(date),
                new Bool(isEffectiveDate),
                new Address(account),
                new StaticArray4<Bytes32>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(sign, Bytes32.class))),
                Collections.<TypeReference<?>>emptyList());
        return createSignedTransaction(function);
    }

    public Tuple5<BigInteger, BigInteger, Boolean, String, List<byte[]>> getUpdateNoteBatchInput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function = new Function(FUNC_UPDATENOTEBATCH, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}, new TypeReference<Bool>() {}, new TypeReference<Address>() {}, new TypeReference<StaticArray4<Bytes32>>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple5<BigInteger, BigInteger, Boolean, String, List<byte[]>>(

                (BigInteger) results.get(0).getValue(), 
                (BigInteger) results.get(1).getValue(), 
                (Boolean) results.get(2).getValue(), 
                (String) results.get(3).getValue(), 
                convertToNative((List<Bytes32>) results.get(4).getValue())
                );
    }

    public Tuple1<Boolean> getUpdateNoteBatchOutput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function = new Function(FUNC_UPDATENOTEBATCH, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Bool>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<Boolean>(

                (Boolean) results.get(0).getValue()
                );
    }

    public TransactionReceipt removeWithSign(byte[] key, List<byte[]> sign) {
        final Function function = new Function(
                FUNC_REMOVEWITHSIGN, 
                Arrays.<Type>asList(new DynamicBytes(key),
                new StaticArray4<Bytes32>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(sign, Bytes32.class))),
                Collections.<TypeReference<?>>emptyList());
        return executeTransaction(function);
    }

    public void removeWithSign(byte[] key, List<byte[]> sign, TransactionCallback callback) {
        final Function function = new Function(
                FUNC_REMOVEWITHSIGN, 
                Arrays.<Type>asList(new DynamicBytes(key),
                new StaticArray4<Bytes32>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(sign, Bytes32.class))),
                Collections.<TypeReference<?>>emptyList());
        asyncExecuteTransaction(function, callback);
    }

    public String getSignedTransactionForRemoveWithSign(byte[] key, List<byte[]> sign) {
        final Function function = new Function(
                FUNC_REMOVEWITHSIGN, 
                Arrays.<Type>asList(new DynamicBytes(key),
                new StaticArray4<Bytes32>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(sign, Bytes32.class))),
                Collections.<TypeReference<?>>emptyList());
        return createSignedTransaction(function);
    }

    public Tuple2<byte[], List<byte[]>> getRemoveWithSignInput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function = new Function(FUNC_REMOVEWITHSIGN, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<DynamicBytes>() {}, new TypeReference<StaticArray4<Bytes32>>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple2<byte[], List<byte[]>>(

                (byte[]) results.get(0).getValue(), 
                convertToNative((List<Bytes32>) results.get(1).getValue())
                );
    }

    public Tuple1<Boolean> getRemoveWithSignOutput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function = new Function(FUNC_REMOVEWITHSIGN, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Bool>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<Boolean>(

                (Boolean) results.get(0).getValue()
                );
    }

    public TransactionReceipt enableBatch(BigInteger batchNo, List<byte[]> sign) {
        final Function function = new Function(
                FUNC_ENABLEBATCH, 
                Arrays.<Type>asList(new Uint256(batchNo),
                new StaticArray4<Bytes32>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(sign, Bytes32.class))),
                Collections.<TypeReference<?>>emptyList());
        return executeTransaction(function);
    }

    public void enableBatch(BigInteger batchNo, List<byte[]> sign, TransactionCallback callback) {
        final Function function = new Function(
                FUNC_ENABLEBATCH, 
                Arrays.<Type>asList(new Uint256(batchNo),
                new StaticArray4<Bytes32>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(sign, Bytes32.class))),
                Collections.<TypeReference<?>>emptyList());
        asyncExecuteTransaction(function, callback);
    }

    public String getSignedTransactionForEnableBatch(BigInteger batchNo, List<byte[]> sign) {
        final Function function = new Function(
                FUNC_ENABLEBATCH, 
                Arrays.<Type>asList(new Uint256(batchNo),
                new StaticArray4<Bytes32>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(sign, Bytes32.class))),
                Collections.<TypeReference<?>>emptyList());
        return createSignedTransaction(function);
    }

    public Tuple2<BigInteger, List<byte[]>> getEnableBatchInput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function = new Function(FUNC_ENABLEBATCH, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}, new TypeReference<StaticArray4<Bytes32>>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple2<BigInteger, List<byte[]>>(

                (BigInteger) results.get(0).getValue(), 
                convertToNative((List<Bytes32>) results.get(1).getValue())
                );
    }

    public Tuple1<Boolean> getEnableBatchOutput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function = new Function(FUNC_ENABLEBATCH, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Bool>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<Boolean>(

                (Boolean) results.get(0).getValue()
                );
    }

    public byte[] USER() throws ContractException {
        final Function function = new Function(FUNC_USER, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<DynamicBytes>() {}));
        return executeCallWithSingleValueReturn(function, byte[].class);
    }

    public byte[] getWithSign(byte[] key, List<byte[]> sign) throws ContractException {
        final Function function = new Function(FUNC_GETWITHSIGN, 
                Arrays.<Type>asList(new DynamicBytes(key),
                new StaticArray4<Bytes32>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(sign, Bytes32.class))),
                Arrays.<TypeReference<?>>asList(new TypeReference<DynamicBytes>() {}));
        return executeCallWithSingleValueReturn(function, byte[].class);
    }

    public TransactionReceipt updateNoteNo(BigInteger oldNoteNo, BigInteger newNoteNo, String account, List<byte[]> sign) {
        final Function function = new Function(
                FUNC_UPDATENOTENO, 
                Arrays.<Type>asList(new Uint256(oldNoteNo),
                new Uint256(newNoteNo),
                new Address(account),
                new StaticArray4<Bytes32>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(sign, Bytes32.class))),
                Collections.<TypeReference<?>>emptyList());
        return executeTransaction(function);
    }

    public void updateNoteNo(BigInteger oldNoteNo, BigInteger newNoteNo, String account, List<byte[]> sign, TransactionCallback callback) {
        final Function function = new Function(
                FUNC_UPDATENOTENO, 
                Arrays.<Type>asList(new Uint256(oldNoteNo),
                new Uint256(newNoteNo),
                new Address(account),
                new StaticArray4<Bytes32>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(sign, Bytes32.class))),
                Collections.<TypeReference<?>>emptyList());
        asyncExecuteTransaction(function, callback);
    }

    public String getSignedTransactionForUpdateNoteNo(BigInteger oldNoteNo, BigInteger newNoteNo, String account, List<byte[]> sign) {
        final Function function = new Function(
                FUNC_UPDATENOTENO, 
                Arrays.<Type>asList(new Uint256(oldNoteNo),
                new Uint256(newNoteNo),
                new Address(account),
                new StaticArray4<Bytes32>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(sign, Bytes32.class))),
                Collections.<TypeReference<?>>emptyList());
        return createSignedTransaction(function);
    }

    public Tuple4<BigInteger, BigInteger, String, List<byte[]>> getUpdateNoteNoInput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function = new Function(FUNC_UPDATENOTENO, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}, new TypeReference<Address>() {}, new TypeReference<StaticArray4<Bytes32>>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple4<BigInteger, BigInteger, String, List<byte[]>>(

                (BigInteger) results.get(0).getValue(), 
                (BigInteger) results.get(1).getValue(), 
                (String) results.get(2).getValue(), 
                convertToNative((List<Bytes32>) results.get(3).getValue())
                );
    }

    public Tuple1<Boolean> getUpdateNoteNoOutput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function = new Function(FUNC_UPDATENOTENO, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Bool>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<Boolean>(

                (Boolean) results.get(0).getValue()
                );
    }

    public Boolean accountHoldNote(String account, BigInteger noteNo, List<byte[]> sign) throws ContractException {
        final Function function = new Function(FUNC_ACCOUNTHOLDNOTE, 
                Arrays.<Type>asList(new Address(account),
                new Uint256(noteNo),
                new StaticArray4<Bytes32>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(sign, Bytes32.class))),
                Arrays.<TypeReference<?>>asList(new TypeReference<Bool>() {}));
        return executeCallWithSingleValueReturn(function, Boolean.class);
    }

    public BigInteger size() throws ContractException {
        final Function function = new Function(FUNC_SIZE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        return executeCallWithSingleValueReturn(function, BigInteger.class);
    }

    public byte[] OPERATOR() throws ContractException {
        final Function function = new Function(FUNC_OPERATOR, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<DynamicBytes>() {}));
        return executeCallWithSingleValueReturn(function, byte[].class);
    }

    public byte[] ROLE() throws ContractException {
        final Function function = new Function(FUNC_ROLE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<DynamicBytes>() {}));
        return executeCallWithSingleValueReturn(function, byte[].class);
    }

    public TransactionReceipt createNote(String owner, BigInteger batchNo, BigInteger noteId, BigInteger noteNoPrefix, BigInteger noteNoSize, BigInteger index) {
        final Function function = new Function(
                FUNC_CREATENOTE, 
                Arrays.<Type>asList(new Address(owner),
                new Uint256(batchNo),
                new Uint256(noteId),
                new Uint256(noteNoPrefix),
                new Uint256(noteNoSize),
                new Uint256(index)),
                Collections.<TypeReference<?>>emptyList());
        return executeTransaction(function);
    }

    public void createNote(String owner, BigInteger batchNo, BigInteger noteId, BigInteger noteNoPrefix, BigInteger noteNoSize, BigInteger index, TransactionCallback callback) {
        final Function function = new Function(
                FUNC_CREATENOTE, 
                Arrays.<Type>asList(new Address(owner),
                new Uint256(batchNo),
                new Uint256(noteId),
                new Uint256(noteNoPrefix),
                new Uint256(noteNoSize),
                new Uint256(index)),
                Collections.<TypeReference<?>>emptyList());
        asyncExecuteTransaction(function, callback);
    }

    public String getSignedTransactionForCreateNote(String owner, BigInteger batchNo, BigInteger noteId, BigInteger noteNoPrefix, BigInteger noteNoSize, BigInteger index) {
        final Function function = new Function(
                FUNC_CREATENOTE, 
                Arrays.<Type>asList(new Address(owner),
                new Uint256(batchNo),
                new Uint256(noteId),
                new Uint256(noteNoPrefix),
                new Uint256(noteNoSize),
                new Uint256(index)),
                Collections.<TypeReference<?>>emptyList());
        return createSignedTransaction(function);
    }

    public Tuple6<String, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger> getCreateNoteInput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function = new Function(FUNC_CREATENOTE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}, new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple6<String, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger>(

                (String) results.get(0).getValue(), 
                (BigInteger) results.get(1).getValue(), 
                (BigInteger) results.get(2).getValue(), 
                (BigInteger) results.get(3).getValue(), 
                (BigInteger) results.get(4).getValue(), 
                (BigInteger) results.get(5).getValue()
                );
    }

    public Tuple1<BigInteger> getCreateNoteOutput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function = new Function(FUNC_CREATENOTE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<BigInteger>(

                (BigInteger) results.get(0).getValue()
                );
    }

    public TransactionReceipt updateNoteProperties(BigInteger noteNo, List<byte[]> keys, List<byte[]> values, String account, List<byte[]> sign) {
        final Function function = new Function(
                FUNC_UPDATENOTEPROPERTIES, 
                Arrays.<Type>asList(new Uint256(noteNo),
                keys.isEmpty()? DynamicArray.empty("bytes[]"):new DynamicArray<DynamicBytes>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(keys, DynamicBytes.class)),
                values.isEmpty()? DynamicArray.empty("bytes[]"):new DynamicArray<DynamicBytes>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(values, DynamicBytes.class)),
                new Address(account),
                new StaticArray4<Bytes32>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(sign, Bytes32.class))),
                Collections.<TypeReference<?>>emptyList());
        return executeTransaction(function);
    }

    public void updateNoteProperties(BigInteger noteNo, List<byte[]> keys, List<byte[]> values, String account, List<byte[]> sign, TransactionCallback callback) {
        final Function function = new Function(
                FUNC_UPDATENOTEPROPERTIES, 
                Arrays.<Type>asList(new Uint256(noteNo),
                keys.isEmpty()? DynamicArray.empty("bytes[]"):new DynamicArray<DynamicBytes>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(keys, DynamicBytes.class)),
                values.isEmpty()? DynamicArray.empty("bytes[]"):new DynamicArray<DynamicBytes>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(values, DynamicBytes.class)),
                new Address(account),
                new StaticArray4<Bytes32>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(sign, Bytes32.class))),
                Collections.<TypeReference<?>>emptyList());
        asyncExecuteTransaction(function, callback);
    }

    public String getSignedTransactionForUpdateNoteProperties(BigInteger noteNo, List<byte[]> keys, List<byte[]> values, String account, List<byte[]> sign) {
        final Function function = new Function(
                FUNC_UPDATENOTEPROPERTIES, 
                Arrays.<Type>asList(new Uint256(noteNo),
                keys.isEmpty()? DynamicArray.empty("bytes[]"):new DynamicArray<DynamicBytes>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(keys, DynamicBytes.class)),
                values.isEmpty()? DynamicArray.empty("bytes[]"):new DynamicArray<DynamicBytes>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(values, DynamicBytes.class)),
                new Address(account),
                new StaticArray4<Bytes32>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(sign, Bytes32.class))),
                Collections.<TypeReference<?>>emptyList());
        return createSignedTransaction(function);
    }

    public Tuple5<BigInteger, List<byte[]>, List<byte[]>, String, List<byte[]>> getUpdateNotePropertiesInput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function = new Function(FUNC_UPDATENOTEPROPERTIES, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}, new TypeReference<DynamicArray<DynamicBytes>>() {}, new TypeReference<DynamicArray<DynamicBytes>>() {}, new TypeReference<Address>() {}, new TypeReference<StaticArray4<Bytes32>>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple5<BigInteger, List<byte[]>, List<byte[]>, String, List<byte[]>>(

                (BigInteger) results.get(0).getValue(), 
                convertToNative((List<DynamicBytes>) results.get(1).getValue()), 
                convertToNative((List<DynamicBytes>) results.get(2).getValue()), 
                (String) results.get(3).getValue(), 
                convertToNative((List<Bytes32>) results.get(4).getValue())
                );
    }

    public Tuple2<List<byte[]>, List<byte[]>> getUpdateNotePropertiesOutput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function = new Function(FUNC_UPDATENOTEPROPERTIES, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<DynamicArray<DynamicBytes>>() {}, new TypeReference<DynamicArray<DynamicBytes>>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple2<List<byte[]>, List<byte[]>>(

                convertToNative((List<DynamicBytes>) results.get(0).getValue()), 
                convertToNative((List<DynamicBytes>) results.get(1).getValue())
                );
    }

    public BigInteger price() throws ContractException {
        final Function function = new Function(FUNC_PRICE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        return executeCallWithSingleValueReturn(function, BigInteger.class);
    }

    public TransactionReceipt set(byte[] key, byte[] value) {
        final Function function = new Function(
                FUNC_SET, 
                Arrays.<Type>asList(new DynamicBytes(key),
                new DynamicBytes(value)),
                Collections.<TypeReference<?>>emptyList());
        return executeTransaction(function);
    }

    public void set(byte[] key, byte[] value, TransactionCallback callback) {
        final Function function = new Function(
                FUNC_SET, 
                Arrays.<Type>asList(new DynamicBytes(key),
                new DynamicBytes(value)),
                Collections.<TypeReference<?>>emptyList());
        asyncExecuteTransaction(function, callback);
    }

    public String getSignedTransactionForSet(byte[] key, byte[] value) {
        final Function function = new Function(
                FUNC_SET, 
                Arrays.<Type>asList(new DynamicBytes(key),
                new DynamicBytes(value)),
                Collections.<TypeReference<?>>emptyList());
        return createSignedTransaction(function);
    }

    public Tuple2<byte[], byte[]> getSetInput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function = new Function(FUNC_SET, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<DynamicBytes>() {}, new TypeReference<DynamicBytes>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple2<byte[], byte[]>(

                (byte[]) results.get(0).getValue(), 
                (byte[]) results.get(1).getValue()
                );
    }

    public Tuple1<Boolean> getSetOutput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function = new Function(FUNC_SET, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Bool>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<Boolean>(

                (Boolean) results.get(0).getValue()
                );
    }

    public List checkTransferAuth(List<String> transactionAddress, List<BigInteger> noteNos, List<String> stringValueList, List<byte[]> sign) throws ContractException {
        final Function function = new Function(FUNC_CHECKTRANSFERAUTH, 
                Arrays.<Type>asList(transactionAddress.isEmpty()? DynamicArray.empty("address[]"):new DynamicArray<Address>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(transactionAddress, Address.class)),
                noteNos.isEmpty()? DynamicArray.empty("uint256[]"):new DynamicArray<Uint256>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(noteNos, Uint256.class)),
                stringValueList.isEmpty()? DynamicArray.empty("string[]"):new DynamicArray<Utf8String>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(stringValueList, Utf8String.class)),
                new StaticArray4<Bytes32>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(sign, Bytes32.class))),
                Arrays.<TypeReference<?>>asList(new TypeReference<DynamicArray<Address>>() {}));
        List<Type> result = (List<Type>) executeCallWithSingleValueReturn(function, List.class);
        return convertToNative(result);
    }

    public TransactionReceipt addWithSign(byte[] key, byte[] value, List<byte[]> sign) {
        final Function function = new Function(
                FUNC_ADDWITHSIGN, 
                Arrays.<Type>asList(new DynamicBytes(key),
                new DynamicBytes(value),
                new StaticArray4<Bytes32>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(sign, Bytes32.class))),
                Collections.<TypeReference<?>>emptyList());
        return executeTransaction(function);
    }

    public void addWithSign(byte[] key, byte[] value, List<byte[]> sign, TransactionCallback callback) {
        final Function function = new Function(
                FUNC_ADDWITHSIGN, 
                Arrays.<Type>asList(new DynamicBytes(key),
                new DynamicBytes(value),
                new StaticArray4<Bytes32>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(sign, Bytes32.class))),
                Collections.<TypeReference<?>>emptyList());
        asyncExecuteTransaction(function, callback);
    }

    public String getSignedTransactionForAddWithSign(byte[] key, byte[] value, List<byte[]> sign) {
        final Function function = new Function(
                FUNC_ADDWITHSIGN, 
                Arrays.<Type>asList(new DynamicBytes(key),
                new DynamicBytes(value),
                new StaticArray4<Bytes32>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(sign, Bytes32.class))),
                Collections.<TypeReference<?>>emptyList());
        return createSignedTransaction(function);
    }

    public Tuple3<byte[], byte[], List<byte[]>> getAddWithSignInput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function = new Function(FUNC_ADDWITHSIGN, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<DynamicBytes>() {}, new TypeReference<DynamicBytes>() {}, new TypeReference<StaticArray4<Bytes32>>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple3<byte[], byte[], List<byte[]>>(

                (byte[]) results.get(0).getValue(), 
                (byte[]) results.get(1).getValue(), 
                convertToNative((List<Bytes32>) results.get(2).getValue())
                );
    }

    public Tuple1<Boolean> getAddWithSignOutput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function = new Function(FUNC_ADDWITHSIGN, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Bool>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<Boolean>(

                (Boolean) results.get(0).getValue()
                );
    }

    public String ADMIN_ADDR() throws ContractException {
        final Function function = new Function(FUNC_ADMIN_ADDR, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}));
        return executeCallWithSingleValueReturn(function, String.class);
    }

    public String getAccountManager() throws ContractException {
        final Function function = new Function(FUNC_GETACCOUNTMANAGER, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}));
        return executeCallWithSingleValueReturn(function, String.class);
    }

    public byte[] ID() throws ContractException {
        final Function function = new Function(FUNC_ID, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<DynamicBytes>() {}));
        return executeCallWithSingleValueReturn(function, byte[].class);
    }

    public byte[] ADDR() throws ContractException {
        final Function function = new Function(FUNC_ADDR, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<DynamicBytes>() {}));
        return executeCallWithSingleValueReturn(function, byte[].class);
    }

    public byte[] TYPE_PUBLIC() throws ContractException {
        final Function function = new Function(FUNC_TYPE_PUBLIC, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<DynamicBytes>() {}));
        return executeCallWithSingleValueReturn(function, byte[].class);
    }

    public String OPERATOR_ADDR() throws ContractException {
        final Function function = new Function(FUNC_OPERATOR_ADDR, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}));
        return executeCallWithSingleValueReturn(function, String.class);
    }

    public byte[] TYPE() throws ContractException {
        final Function function = new Function(FUNC_TYPE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<DynamicBytes>() {}));
        return executeCallWithSingleValueReturn(function, byte[].class);
    }

    public TransactionReceipt unfreezeNote(BigInteger noteNo, String account, List<byte[]> sign) {
        final Function function = new Function(
                FUNC_UNFREEZENOTE, 
                Arrays.<Type>asList(new Uint256(noteNo),
                new Address(account),
                new StaticArray4<Bytes32>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(sign, Bytes32.class))),
                Collections.<TypeReference<?>>emptyList());
        return executeTransaction(function);
    }

    public void unfreezeNote(BigInteger noteNo, String account, List<byte[]> sign, TransactionCallback callback) {
        final Function function = new Function(
                FUNC_UNFREEZENOTE, 
                Arrays.<Type>asList(new Uint256(noteNo),
                new Address(account),
                new StaticArray4<Bytes32>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(sign, Bytes32.class))),
                Collections.<TypeReference<?>>emptyList());
        asyncExecuteTransaction(function, callback);
    }

    public String getSignedTransactionForUnfreezeNote(BigInteger noteNo, String account, List<byte[]> sign) {
        final Function function = new Function(
                FUNC_UNFREEZENOTE, 
                Arrays.<Type>asList(new Uint256(noteNo),
                new Address(account),
                new StaticArray4<Bytes32>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(sign, Bytes32.class))),
                Collections.<TypeReference<?>>emptyList());
        return createSignedTransaction(function);
    }

    public Tuple3<BigInteger, String, List<byte[]>> getUnfreezeNoteInput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function = new Function(FUNC_UNFREEZENOTE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}, new TypeReference<Address>() {}, new TypeReference<StaticArray4<Bytes32>>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple3<BigInteger, String, List<byte[]>>(

                (BigInteger) results.get(0).getValue(), 
                (String) results.get(1).getValue(), 
                convertToNative((List<Bytes32>) results.get(2).getValue())
                );
    }

    public Tuple1<BigInteger> getUnfreezeNoteOutput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function = new Function(FUNC_UNFREEZENOTE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint8>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<BigInteger>(

                (BigInteger) results.get(0).getValue()
                );
    }

    public TransactionReceipt createBatch(BigInteger effectiveDate, BigInteger expirationDate, BigInteger amount, String issuer) {
        final Function function = new Function(
                FUNC_CREATEBATCH, 
                Arrays.<Type>asList(new Uint256(effectiveDate),
                new Uint256(expirationDate),
                new Uint256(amount),
                new Address(issuer)),
                Collections.<TypeReference<?>>emptyList());
        return executeTransaction(function);
    }

    public void createBatch(BigInteger effectiveDate, BigInteger expirationDate, BigInteger amount, String issuer, TransactionCallback callback) {
        final Function function = new Function(
                FUNC_CREATEBATCH, 
                Arrays.<Type>asList(new Uint256(effectiveDate),
                new Uint256(expirationDate),
                new Uint256(amount),
                new Address(issuer)),
                Collections.<TypeReference<?>>emptyList());
        asyncExecuteTransaction(function, callback);
    }

    public String getSignedTransactionForCreateBatch(BigInteger effectiveDate, BigInteger expirationDate, BigInteger amount, String issuer) {
        final Function function = new Function(
                FUNC_CREATEBATCH, 
                Arrays.<Type>asList(new Uint256(effectiveDate),
                new Uint256(expirationDate),
                new Uint256(amount),
                new Address(issuer)),
                Collections.<TypeReference<?>>emptyList());
        return createSignedTransaction(function);
    }

    public Tuple4<BigInteger, BigInteger, BigInteger, String> getCreateBatchInput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function = new Function(FUNC_CREATEBATCH, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}, new TypeReference<Address>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple4<BigInteger, BigInteger, BigInteger, String>(

                (BigInteger) results.get(0).getValue(), 
                (BigInteger) results.get(1).getValue(), 
                (BigInteger) results.get(2).getValue(), 
                (String) results.get(3).getValue()
                );
    }

    public Tuple2<BigInteger, BigInteger> getCreateBatchOutput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function = new Function(FUNC_CREATEBATCH, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple2<BigInteger, BigInteger>(

                (BigInteger) results.get(0).getValue(), 
                (BigInteger) results.get(1).getValue()
                );
    }

    public BigInteger getAccountNoteSize(String account, List<byte[]> sign) throws ContractException {
        final Function function = new Function(FUNC_GETACCOUNTNOTESIZE, 
                Arrays.<Type>asList(new Address(account),
                new StaticArray4<Bytes32>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(sign, Bytes32.class))),
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        return executeCallWithSingleValueReturn(function, BigInteger.class);
    }

    public Tuple4<List<String>, List<BigInteger>, List<BigInteger>, BigInteger> getNoteDetail(BigInteger noteNo, String account, List<byte[]> sign) throws ContractException {
        final Function function = new Function(FUNC_GETNOTEDETAIL, 
                Arrays.<Type>asList(new Uint256(noteNo),
                new Address(account),
                new StaticArray4<Bytes32>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(sign, Bytes32.class))),
                Arrays.<TypeReference<?>>asList(new TypeReference<DynamicArray<Address>>() {}, new TypeReference<DynamicArray<Uint256>>() {}, new TypeReference<DynamicArray<Uint256>>() {}, new TypeReference<Uint8>() {}));
        List<Type> results = executeCallWithMultipleValueReturn(function);
        return new Tuple4<List<String>, List<BigInteger>, List<BigInteger>, BigInteger>(
                convertToNative((List<Address>) results.get(0).getValue()), 
                convertToNative((List<Uint256>) results.get(1).getValue()), 
                convertToNative((List<Uint256>) results.get(2).getValue()), 
                (BigInteger) results.get(3).getValue());
    }

    public String getAuthCenter() throws ContractException {
        final Function function = new Function(FUNC_GETAUTHCENTER, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}));
        return executeCallWithSingleValueReturn(function, String.class);
    }

    public String getAuthManager() throws ContractException {
        final Function function = new Function(FUNC_GETAUTHMANAGER, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}));
        return executeCallWithSingleValueReturn(function, String.class);
    }

    public TransactionReceipt insertWithSign(byte[] key, byte[] value, List<byte[]> sign) {
        final Function function = new Function(
                FUNC_INSERTWITHSIGN, 
                Arrays.<Type>asList(new DynamicBytes(key),
                new DynamicBytes(value),
                new StaticArray4<Bytes32>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(sign, Bytes32.class))),
                Collections.<TypeReference<?>>emptyList());
        return executeTransaction(function);
    }

    public void insertWithSign(byte[] key, byte[] value, List<byte[]> sign, TransactionCallback callback) {
        final Function function = new Function(
                FUNC_INSERTWITHSIGN, 
                Arrays.<Type>asList(new DynamicBytes(key),
                new DynamicBytes(value),
                new StaticArray4<Bytes32>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(sign, Bytes32.class))),
                Collections.<TypeReference<?>>emptyList());
        asyncExecuteTransaction(function, callback);
    }

    public String getSignedTransactionForInsertWithSign(byte[] key, byte[] value, List<byte[]> sign) {
        final Function function = new Function(
                FUNC_INSERTWITHSIGN, 
                Arrays.<Type>asList(new DynamicBytes(key),
                new DynamicBytes(value),
                new StaticArray4<Bytes32>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(sign, Bytes32.class))),
                Collections.<TypeReference<?>>emptyList());
        return createSignedTransaction(function);
    }

    public Tuple3<byte[], byte[], List<byte[]>> getInsertWithSignInput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function = new Function(FUNC_INSERTWITHSIGN, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<DynamicBytes>() {}, new TypeReference<DynamicBytes>() {}, new TypeReference<StaticArray4<Bytes32>>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple3<byte[], byte[], List<byte[]>>(

                (byte[]) results.get(0).getValue(), 
                (byte[]) results.get(1).getValue(), 
                convertToNative((List<Bytes32>) results.get(2).getValue())
                );
    }

    public Tuple1<Boolean> getInsertWithSignOutput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function = new Function(FUNC_INSERTWITHSIGN, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Bool>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<Boolean>(

                (Boolean) results.get(0).getValue()
                );
    }

    public BigInteger getNonce() throws ContractException {
        final Function function = new Function(FUNC_GETNONCE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        return executeCallWithSingleValueReturn(function, BigInteger.class);
    }

    public Tuple2<List<byte[]>, List<byte[]>> getNoteProperties(BigInteger noteNo, String account, List<byte[]> sign) throws ContractException {
        final Function function = new Function(FUNC_GETNOTEPROPERTIES, 
                Arrays.<Type>asList(new Uint256(noteNo),
                new Address(account),
                new StaticArray4<Bytes32>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(sign, Bytes32.class))),
                Arrays.<TypeReference<?>>asList(new TypeReference<DynamicArray<DynamicBytes>>() {}, new TypeReference<DynamicArray<DynamicBytes>>() {}));
        List<Type> results = executeCallWithMultipleValueReturn(function);
        return new Tuple2<List<byte[]>, List<byte[]>>(
                convertToNative((List<DynamicBytes>) results.get(0).getValue()), 
                convertToNative((List<DynamicBytes>) results.get(1).getValue()));
    }

    public byte[] get(byte[] key) throws ContractException {
        final Function function = new Function(FUNC_GET, 
                Arrays.<Type>asList(new DynamicBytes(key)),
                Arrays.<TypeReference<?>>asList(new TypeReference<DynamicBytes>() {}));
        return executeCallWithSingleValueReturn(function, byte[].class);
    }

    public List getHolders(List<byte[]> sign) throws ContractException {
        final Function function = new Function(FUNC_GETHOLDERS, 
                Arrays.<Type>asList(new StaticArray4<Bytes32>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(sign, Bytes32.class))),
                Arrays.<TypeReference<?>>asList(new TypeReference<DynamicArray<Address>>() {}));
        List<Type> result = (List<Type>) executeCallWithSingleValueReturn(function, List.class);
        return convertToNative(result);
    }

    public TransactionReceipt setWithSign(byte[] key, byte[] value, List<byte[]> sign) {
        final Function function = new Function(
                FUNC_SETWITHSIGN, 
                Arrays.<Type>asList(new DynamicBytes(key),
                new DynamicBytes(value),
                new StaticArray4<Bytes32>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(sign, Bytes32.class))),
                Collections.<TypeReference<?>>emptyList());
        return executeTransaction(function);
    }

    public void setWithSign(byte[] key, byte[] value, List<byte[]> sign, TransactionCallback callback) {
        final Function function = new Function(
                FUNC_SETWITHSIGN, 
                Arrays.<Type>asList(new DynamicBytes(key),
                new DynamicBytes(value),
                new StaticArray4<Bytes32>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(sign, Bytes32.class))),
                Collections.<TypeReference<?>>emptyList());
        asyncExecuteTransaction(function, callback);
    }

    public String getSignedTransactionForSetWithSign(byte[] key, byte[] value, List<byte[]> sign) {
        final Function function = new Function(
                FUNC_SETWITHSIGN, 
                Arrays.<Type>asList(new DynamicBytes(key),
                new DynamicBytes(value),
                new StaticArray4<Bytes32>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(sign, Bytes32.class))),
                Collections.<TypeReference<?>>emptyList());
        return createSignedTransaction(function);
    }

    public Tuple3<byte[], byte[], List<byte[]>> getSetWithSignInput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function = new Function(FUNC_SETWITHSIGN, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<DynamicBytes>() {}, new TypeReference<DynamicBytes>() {}, new TypeReference<StaticArray4<Bytes32>>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple3<byte[], byte[], List<byte[]>>(

                (byte[]) results.get(0).getValue(), 
                (byte[]) results.get(1).getValue(), 
                convertToNative((List<Bytes32>) results.get(2).getValue())
                );
    }

    public Tuple1<Boolean> getSetWithSignOutput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function = new Function(FUNC_SETWITHSIGN, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Bool>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<Boolean>(

                (Boolean) results.get(0).getValue()
                );
    }

    public TransactionReceipt freezeNote(BigInteger noteNo, String account, List<byte[]> sign) {
        final Function function = new Function(
                FUNC_FREEZENOTE, 
                Arrays.<Type>asList(new Uint256(noteNo),
                new Address(account),
                new StaticArray4<Bytes32>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(sign, Bytes32.class))),
                Collections.<TypeReference<?>>emptyList());
        return executeTransaction(function);
    }

    public void freezeNote(BigInteger noteNo, String account, List<byte[]> sign, TransactionCallback callback) {
        final Function function = new Function(
                FUNC_FREEZENOTE, 
                Arrays.<Type>asList(new Uint256(noteNo),
                new Address(account),
                new StaticArray4<Bytes32>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(sign, Bytes32.class))),
                Collections.<TypeReference<?>>emptyList());
        asyncExecuteTransaction(function, callback);
    }

    public String getSignedTransactionForFreezeNote(BigInteger noteNo, String account, List<byte[]> sign) {
        final Function function = new Function(
                FUNC_FREEZENOTE, 
                Arrays.<Type>asList(new Uint256(noteNo),
                new Address(account),
                new StaticArray4<Bytes32>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(sign, Bytes32.class))),
                Collections.<TypeReference<?>>emptyList());
        return createSignedTransaction(function);
    }

    public Tuple3<BigInteger, String, List<byte[]>> getFreezeNoteInput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function = new Function(FUNC_FREEZENOTE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}, new TypeReference<Address>() {}, new TypeReference<StaticArray4<Bytes32>>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple3<BigInteger, String, List<byte[]>>(

                (BigInteger) results.get(0).getValue(), 
                (String) results.get(1).getValue(), 
                convertToNative((List<Bytes32>) results.get(2).getValue())
                );
    }

    public Tuple1<Boolean> getFreezeNoteOutput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function = new Function(FUNC_FREEZENOTE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Bool>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<Boolean>(

                (Boolean) results.get(0).getValue()
                );
    }

    public TransactionReceipt openAccount(String account, List<byte[]> sign) {
        final Function function = new Function(
                FUNC_OPENACCOUNT, 
                Arrays.<Type>asList(new Address(account),
                new StaticArray4<Bytes32>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(sign, Bytes32.class))),
                Collections.<TypeReference<?>>emptyList());
        return executeTransaction(function);
    }

    public void openAccount(String account, List<byte[]> sign, TransactionCallback callback) {
        final Function function = new Function(
                FUNC_OPENACCOUNT, 
                Arrays.<Type>asList(new Address(account),
                new StaticArray4<Bytes32>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(sign, Bytes32.class))),
                Collections.<TypeReference<?>>emptyList());
        asyncExecuteTransaction(function, callback);
    }

    public String getSignedTransactionForOpenAccount(String account, List<byte[]> sign) {
        final Function function = new Function(
                FUNC_OPENACCOUNT, 
                Arrays.<Type>asList(new Address(account),
                new StaticArray4<Bytes32>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(sign, Bytes32.class))),
                Collections.<TypeReference<?>>emptyList());
        return createSignedTransaction(function);
    }

    public Tuple2<String, List<byte[]>> getOpenAccountInput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function = new Function(FUNC_OPENACCOUNT, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}, new TypeReference<StaticArray4<Bytes32>>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple2<String, List<byte[]>>(

                (String) results.get(0).getValue(), 
                convertToNative((List<Bytes32>) results.get(1).getValue())
                );
    }

    public Tuple1<Boolean> getOpenAccountOutput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function = new Function(FUNC_OPENACCOUNT, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Bool>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<Boolean>(

                (Boolean) results.get(0).getValue()
                );
    }

    public BigInteger getNoteNoByNoteId(BigInteger noteId) throws ContractException {
        final Function function = new Function(FUNC_GETNOTENOBYNOTEID, 
                Arrays.<Type>asList(new Uint256(noteId)),
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        return executeCallWithSingleValueReturn(function, BigInteger.class);
    }

    public byte[] KEY_ALL() throws ContractException {
        final Function function = new Function(FUNC_KEY_ALL, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<DynamicBytes>() {}));
        return executeCallWithSingleValueReturn(function, byte[].class);
    }

    public TransactionReceipt transfer(List<String> transactionAddress, List<BigInteger> noteNos, List<String> stringValueList, List<byte[]> sign) {
        final Function function = new Function(
                FUNC_TRANSFER, 
                Arrays.<Type>asList(transactionAddress.isEmpty()? DynamicArray.empty("address[]"):new DynamicArray<Address>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(transactionAddress, Address.class)),
                noteNos.isEmpty()? DynamicArray.empty("uint256[]"):new DynamicArray<Uint256>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(noteNos, Uint256.class)),
                stringValueList.isEmpty()? DynamicArray.empty("string[]"):new DynamicArray<Utf8String>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(stringValueList, Utf8String.class)),
                new StaticArray4<Bytes32>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(sign, Bytes32.class))),
                Collections.<TypeReference<?>>emptyList());
        return executeTransaction(function);
    }

    public void transfer(List<String> transactionAddress, List<BigInteger> noteNos, List<String> stringValueList, List<byte[]> sign, TransactionCallback callback) {
        final Function function = new Function(
                FUNC_TRANSFER, 
                Arrays.<Type>asList(transactionAddress.isEmpty()? DynamicArray.empty("address[]"):new DynamicArray<Address>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(transactionAddress, Address.class)),
                noteNos.isEmpty()? DynamicArray.empty("uint256[]"):new DynamicArray<Uint256>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(noteNos, Uint256.class)),
                stringValueList.isEmpty()? DynamicArray.empty("string[]"):new DynamicArray<Utf8String>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(stringValueList, Utf8String.class)),
                new StaticArray4<Bytes32>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(sign, Bytes32.class))),
                Collections.<TypeReference<?>>emptyList());
        asyncExecuteTransaction(function, callback);
    }

    public String getSignedTransactionForTransfer(List<String> transactionAddress, List<BigInteger> noteNos, List<String> stringValueList, List<byte[]> sign) {
        final Function function = new Function(
                FUNC_TRANSFER, 
                Arrays.<Type>asList(transactionAddress.isEmpty()? DynamicArray.empty("address[]"):new DynamicArray<Address>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(transactionAddress, Address.class)),
                noteNos.isEmpty()? DynamicArray.empty("uint256[]"):new DynamicArray<Uint256>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(noteNos, Uint256.class)),
                stringValueList.isEmpty()? DynamicArray.empty("string[]"):new DynamicArray<Utf8String>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(stringValueList, Utf8String.class)),
                new StaticArray4<Bytes32>(
                        org.fisco.bcos.sdk.abi.Utils.typeMap(sign, Bytes32.class))),
                Collections.<TypeReference<?>>emptyList());
        return createSignedTransaction(function);
    }

    public Tuple4<List<String>, List<BigInteger>, List<String>, List<byte[]>> getTransferInput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function = new Function(FUNC_TRANSFER, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<DynamicArray<Address>>() {}, new TypeReference<DynamicArray<Uint256>>() {}, new TypeReference<DynamicArray<Utf8String>>() {}, new TypeReference<StaticArray4<Bytes32>>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple4<List<String>, List<BigInteger>, List<String>, List<byte[]>>(

                convertToNative((List<Address>) results.get(0).getValue()), 
                convertToNative((List<Uint256>) results.get(1).getValue()), 
                convertToNative((List<Utf8String>) results.get(2).getValue()), 
                convertToNative((List<Bytes32>) results.get(3).getValue())
                );
    }

    public Tuple2<Boolean, List<BigInteger>> getTransferOutput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function = new Function(FUNC_TRANSFER, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Bool>() {}, new TypeReference<DynamicArray<Uint256>>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple2<Boolean, List<BigInteger>>(

                (Boolean) results.get(0).getValue(), 
                convertToNative((List<Uint256>) results.get(1).getValue())
                );
    }

    public List<LogAccountListEventResponse> getLogAccountListEvents(TransactionReceipt transactionReceipt) {
        List<EventValuesWithLog> valueList = extractEventParametersWithLog(LOGACCOUNTLIST_EVENT, transactionReceipt);
        ArrayList<LogAccountListEventResponse> responses = new ArrayList<LogAccountListEventResponse>(valueList.size());
        for (EventValuesWithLog eventValues : valueList) {
            LogAccountListEventResponse typedResponse = new LogAccountListEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.account = (String) eventValues.getNonIndexedValues().get(0).getValue();
            typedResponse.LogAccountListParam0 = (List<BigInteger>) eventValues.getNonIndexedValues().get(1).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public void subscribeLogAccountListEvent(String fromBlock, String toBlock, List<String> otherTopics, EventCallback callback) {
        String topic0 = eventEncoder.encode(LOGACCOUNTLIST_EVENT);
        subscribeEvent(ABI,BINARY,topic0,fromBlock,toBlock,otherTopics,callback);
    }

    public void subscribeLogAccountListEvent(EventCallback callback) {
        String topic0 = eventEncoder.encode(LOGACCOUNTLIST_EVENT);
        subscribeEvent(ABI,BINARY,topic0,callback);
    }

    public List<LogNoteStatusEventResponse> getLogNoteStatusEvents(TransactionReceipt transactionReceipt) {
        List<EventValuesWithLog> valueList = extractEventParametersWithLog(LOGNOTESTATUS_EVENT, transactionReceipt);
        ArrayList<LogNoteStatusEventResponse> responses = new ArrayList<LogNoteStatusEventResponse>(valueList.size());
        for (EventValuesWithLog eventValues : valueList) {
            LogNoteStatusEventResponse typedResponse = new LogNoteStatusEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.noteNo = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
            typedResponse.noteID = (BigInteger) eventValues.getNonIndexedValues().get(1).getValue();
            typedResponse.status = (BigInteger) eventValues.getNonIndexedValues().get(2).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public void subscribeLogNoteStatusEvent(String fromBlock, String toBlock, List<String> otherTopics, EventCallback callback) {
        String topic0 = eventEncoder.encode(LOGNOTESTATUS_EVENT);
        subscribeEvent(ABI,BINARY,topic0,fromBlock,toBlock,otherTopics,callback);
    }

    public void subscribeLogNoteStatusEvent(EventCallback callback) {
        String topic0 = eventEncoder.encode(LOGNOTESTATUS_EVENT);
        subscribeEvent(ABI,BINARY,topic0,callback);
    }

    public static NonFungibleAsset load(String contractAddress, Client client, CryptoKeyPair credential) {
        return new NonFungibleAsset(contractAddress, client, credential);
    }

    public static NonFungibleAsset deploy(Client client, CryptoKeyPair credential, String assetName, String authCenterAddr, String orgAddress) throws ContractException {
        String encodedConstructor = FunctionEncoder.encodeConstructor(Arrays.<Type>asList(new Utf8String(assetName),
                new Address(authCenterAddr),
                new Address(orgAddress)));
        return deploy(NonFungibleAsset.class, client, credential, getBinary(client.getCryptoSuite()), encodedConstructor);
    }

    public static class LogAccountListEventResponse {
        public TransactionReceipt.Logs log;

        public String account;

        public List<BigInteger> LogAccountListParam0;
    }

    public static class LogNoteStatusEventResponse {
        public TransactionReceipt.Logs log;

        public BigInteger noteNo;

        public BigInteger noteID;

        public BigInteger status;
    }
}
